Я пытаюсь создать пользовательское MarkupExtension в формах Xamarin, используя Type
в качестве свойства.К сожалению, я не могу передать свойство Type
, в моем случае это всегда null
.Вот минимальный пример моего MarkupExtension, возвращающего полное имя типа в виде строки:
[ContentProperty(nameof(TheType))]
public class TypeMarkupExtension : IMarkupExtension
{
public Type TheType { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
return TheType?.FullName ?? "Failure";
}
}
Но что бы я ни пытался, использовать MarkupExtension невозможно, потому что TheType
всегда null
имое возвращаемое значение "Failure"
.Вот способ, которым я пытался использовать расширение как:
<Label Text="{local:TypeMarkup x:Int16}"/>
<Label Text="{local:TypeMarkup {x:Type x:Int16}}"/>
Код работает отлично, если я использую простой string
в качестве типа свойства.Для меня это выглядит как передача Type
, поскольку свойство невозможно.Это правильно или проблема с моим кодом?