我创建了一个自定义标记扩展,如下所示
public class CME: MarkupExtension
{
private Type _type;
private string _typeName;
public CME()
{
}
public CME(Type type, string typeName)
{
this._type = type;
this._typeName = typeName;
}
[ConstructorArgument("type")]
public Type Type
{
get
{
return this._type;
}
set
{
this._type = value;
}
}
[ConstructorArgument("typeName")]
public string TypeName
{
get
{
return this._typeName;
}
set
{
this._typeName = value;
}
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
而且我发现我仍然可以使用{local:CME {x:Type sys:Boolean},Bool}
在 XAML 中创建 CME 类的实例,即使我删除了 CME 类中的所有 ConstructorArgumentAttribute。
所以我想知道为什么我们在自定义标记扩展实现中需要 ConstructorArgumentAttribute 或者 ConstructorArgumentAttribute 是什么意思。
有没有人可以帮助解决这个问题?非常感谢。