Получить имя атрибута / строку класса с атрибутом - PullRequest
0 голосов
/ 14 сентября 2010

У меня есть классы, называемые BillingActivity, DevelopmentActivity, ResearchActivity, все реализующие IActivity.

Где-то в моем приложении я перечисляю dll, содержащую все типы.Проверьте, если typeof (IActivity) .IsAssignable (type), если так, я хочу получить строку typeDescription = type.Attribute.Value или аналогичную, то, что я хочу, это поместить атрибут в класс ИЛИ в вышеупомянутые классы (зависит от того, какие предложения вы делаете иликакие решения возможны) как

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

Я не хочу получать экземпляр этого типа, я просто хочу получить описание (значение атрибута).

Как я могу сделатьтот?Может кто-нибудь подтолкнуть меня в правильном направлении, пожалуйста?

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Создайте пользовательский атрибут с одним строковым свойством, пометьте его классами, затем 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" );
}
...

Редактировать - Также, пожалуйста, прочитайте это

Какой самый простой и элегантный способ использовать пользовательский атрибут

0 голосов
/ 14 сентября 2010
ActivityType result =
  (ActivityType)Attribute.GetCustomAttribute(this.GetType(), typeof(ActivityType));
...