我使用的是某个组件,其中一个属性属于System.Type
类型。这在大多数情况下都可以正常工作,但现在我发现自己需要int?
。这看起来并不那么简单,经过一些搜索和反复试验,我最终得到了这个:
<local:NullableUInt32PropertyEditor PropertyType="{x:Type system:Nullable`1[System.UInt32]}"/>
这会编译并按预期工作,但错误列表会给出
Nested types are not supported: Nullable`1[System.UInt32].
Intellisense还在语句下给出了一个squigly行,预览也说明了invallid标记。
处理此问题的正确方法是什么?
谢谢你, 杰夫编辑:这与在此问题中声明值不同(Declare a Nullable int (int?) using XAML)。我需要声明类型,而不是值。
答案 0 :(得分:0)
经过一些进一步的研究后,我提出了这个解决方案:
public class NullableExtension : TypeExtension
{
public NullableExtension()
{
}
public NullableExtension(string type)
: base(type)
{
}
public NullableExtension(Type type)
: base(type)
{
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
Type basis = (Type)base.ProvideValue(serviceProvider);
return typeof(Nullable<>).MakeGenericType(basis);
}
}
然后在xaml:
<local:NullableUInt32PropertyEditor PropertyType="{local:Nullable system:UInt32}"/>