获取具有属性的类的属性名称/字符串

时间:2010-09-14 18:52:19

标签: c# .net attributes annotations

我有一个名为BillingActivity,DevelopmentActivity,ResearchActivity的类,它们都实现了IActivity。

在我的应用程序的某个地方,我列举了一个包含所有类型的dll。检查wether typeof(IActivity).IsAssignable(type)如果是这样我想得到字符串typeDescription = type.Attribute.Value或类似我想要的是将一个属性放在一个类或上面的类上(取决于你提出的建议或可能的解决方案)如

[ActivityType = "Billing"].
public class BillingActivity {}

我不想获得该类型的实例我只想获取描述(属性的值)。

我该怎么做?有人可以把我推向正确的方向吗?

2 个答案:

答案 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));