我有以下自定义属性,我希望将类型名称作为属性。但是,我不想在使用该属性时使用该类型的字符串表示。例如:
public class HelpMeAttribute : Attribute
{
public string TypeName { get; set; }
}
要使用它,我想这个
[HelpMe(TypeName = typeof(MyClass2).FullName]
public class MyClass1
{
}
public class MyClass2
{
}
我收到错误:“属性必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。”
我不愿意这样做:
[HelpMe(TypeName = "MyClass2"]
因为在字符串中输入类型似乎很糟糕。最好让编译器检查我在属性中放置的类型是否存在。
有人能指出我解决启蒙的道路吗?
答案 0 :(得分:1)
属性初始值设定项只能使用编译时常量或System.Type
属性。
那么为什么不使用Type
?
public class HelpMeAttribute : Attribute
{
public Type Type { get; set; }
...
public HelpMeAttribute()
{
}
}
...
[HelpMe(Type = typeof(MyClass2))]
public class MyClass1
{
}