4

我创建了一个自定义标记扩展,如下所示

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 是什么意思。

有没有人可以帮助解决这个问题?非常感谢。

4

0 回答 0