使用Type作为属性的自定义属性

时间:2013-04-18 02:10:33

标签: c# custom-attributes

我有以下自定义属性,我希望将类型名称作为属性。但是,我不想在使用该属性时使用该类型的字符串表示。例如:

public class HelpMeAttribute : Attribute
{
    public string TypeName { get; set; }
}

要使用它,我想这个

[HelpMe(TypeName = typeof(MyClass2).FullName]
public class MyClass1
{
}

public class MyClass2
{
}

我收到错误:“属性必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。”

我不愿意这样做:

[HelpMe(TypeName = "MyClass2"]

因为在字符串中输入类型似乎很糟糕。最好让编译器检查我在属性中放置的类型是否存在。

有人能指出我解决启蒙的道路吗?

1 个答案:

答案 0 :(得分:1)

属性初始值设定项只能使用编译时常量或System.Type属性。

那么为什么不使用Type

public class HelpMeAttribute : Attribute
{
    public Type Type { get; set; }
    ...

    public HelpMeAttribute()
    {
    }
}

...
[HelpMe(Type = typeof(MyClass2))]
public class MyClass1
{
}