我有一个名为BillingActivity,DevelopmentActivity,ResearchActivity的类,它们都实现了IActivity。
在我的应用程序的某个地方,我列举了一个包含所有类型的dll。检查wether typeof(IActivity).IsAssignable(type)如果是这样我想得到字符串typeDescription = type.Attribute.Value或类似我想要的是将一个属性放在一个类或上面的类上(取决于你提出的建议或可能的解决方案)如
[ActivityType = "Billing"].
public class BillingActivity {}
我不想获得该类型的实例我只想获取描述(属性的值)。
我该怎么做?有人可以把我推向正确的方向吗?
答案 0 :(得分:1)
使用单个字符串属性创建自定义属性,使用它标记类,然后使用属性标记用于测试特定类的GetCustomAttributes,如果是,则可以读取属性以提取您设置的名称。
public class ActivityTypeAttribute : Attribute
{
public Name { get; set; }
}
[ActivityType(Name="MyClass")]
public class MyClass { }
...
{
ActivityTypeAttribute att = (ActivityTypeAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(ActivityTypeAttribute));
Debug.Assert( att.Name == "MyClass" );
}
...
编辑 - 另外,请阅读此
What's the simplest most elegant way to utilize a custom attribute
答案 1 :(得分:0)
ActivityType result =
(ActivityType)Attribute.GetCustomAttribute(this.GetType(), typeof(ActivityType));