使用Type作为属性的自定义属性
本文关键字:自定义属性 属性 Type 使用 | 更新日期: 2023-09-27 18:09:50
我有以下自定义属性,我希望将类型名称作为属性。但是,我不希望在使用属性时必须使用类型的字符串表示形式。例子:
public class HelpMeAttribute : Attribute
{
public string TypeName { get; set; }
}
为了使用它,我认为这
[HelpMe(TypeName = typeof(MyClass2).FullName]
public class MyClass1
{
}
public class MyClass2
{
}
我得到错误:"属性必须是一个常量表达式、typeof表达式或属性参数类型的数组创建表达式。"
我宁愿不做:
[HelpMe(TypeName = "MyClass2"]
,因为把类型放在字符串中看起来很糟糕。最好让编译器检查我放入属性中的类型是否存在。
谁能给我指路来解决这个问题?
属性初始化器只能使用编译时常量或System.Type
属性。
为什么不直接用Type
呢?
public class HelpMeAttribute : Attribute
{
public Type Type { get; set; }
...
public HelpMeAttribute()
{
}
}
...
[HelpMe(Type = typeof(MyClass2))]
public class MyClass1
{
}