2013-03-17 3 views
-3

Как использовать DescriptionAttibute для достижения следующих целей: enums? Обратите внимание на пробелы в значениях перечисления.Как использовать DescriptionAttribute для достижения имен перечислений с пробелами?

public enum PersonGender 
    { 
     Unknown = 0, 
     Male = 1, 
     Female = 2, 
     Intersex = 3, 
     Indeterminate = 3, 
     Non Stated = 9, 
     Inadequately Described = 9 
    } 

ответ

3

Например, вы можете использовать так:

Это наше перечисление:

public enum MyEnum 
{ 
    [Description("Description for Foo")] 
    Foo, 
    [Description("Description for Bar")] 
    Bar 
} 

И наш метод для получения атрибута.

public static string GetDescription(this Enum value) 
{ 
    Type type = value.GetType(); 
    string name = Enum.GetName(type, value); 
    if (name != null) 
    { 
     FieldInfo field = type.GetField(name); 
     if (field != null) 
     { 
      DescriptionAttribute attr = 
        Attribute.GetCustomAttribute(field, 
        typeof(DescriptionAttribute)) as DescriptionAttribute; 
       if (attr != null) 
       { 
        return attr.Description; 
       } 
     } 
    } 
    return null; 
} 

И вы можете получить описание:

MyEnum x = MyEnum.Foo; 
    string description = x.GetDescription(); 

Source

+0

Я не понимаю, почему это так сложно, чтобы атрибут описания перечисления. Нет ли встроенной функции для доступа к ней? – CJ7

+0

Как я знаю, нет. –

Смежные вопросы