开发者

Get the attribute name/string of a class with attribute

I have a classes called BillingActivity, DevelopmentActivity, ResearchActivity al开发者_StackOverflow中文版l implementing IActivity.

Somewhere in my app I enumerate a dll containing all types. Check wether typeof(IActivity).IsAssignable(type) if so I want to get string typeDescription = type.Attribute.Value or similar what I want is to put a attribute on a class OR on the above classes (depends what suggestions you make or what solutions are possible) like

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

I do not want to get a instance of that type I just want to get the description(attribute `s value).

How can I do that? Can someone push me in the right direction please?


Create a custom attribute with a single string property, tag your classes with it, then GetCustomAttributes to test a particular class is tagged with the attribute, and if it is you can read the property to pull the name you set.

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" );
}
...

Edit - Also, please read this

What's the simplest most elegant way to utilize a custom attribute


ActivityType result =
  (ActivityType)Attribute.GetCustomAttribute(this.GetType(), typeof(ActivityType));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜