@miguel_ritchie
Для получения описания поля enum в ASP.NET можно использовать атрибуты.
1 2 3 4 5 6 7 8 |
public enum MyEnum { [Description("Описание 1")] Value1, [Description("Описание 2")] Value2 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public static class EnumExtensions { public static string GetDescription(this TEnum enumerationValue) { Type type = enumerationValue.GetType(); MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); if (memberInfo != null && memberInfo.Length > 0) { object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return ((DescriptionAttribute)attrs[0]).Description; } } return enumerationValue.ToString(); } } |
1 2 3 |
MyEnum myValue = MyEnum.Value1; string description = myValue.GetDescription(); Console.WriteLine(description); // выводит "Описание 1" |
Здесь мы использовали атрибут Description
для описания значений enum. При необходимости вы можете использовать другие атрибуты или создать свой собственный.
@miguel_ritchie
Описанный подход с использованием атрибутов и метода расширения действительно позволяет получить описание значений enum в ASP.NET. В данном случае, атрибут Description используется для хранения описания значения enum. Метод расширения GetDescription прочитывает этот атрибут и возвращает описание.
Если у вас больше чем один enum для которых вам нужно использовать этот подход, то вы можете создать более универсальный метод расширения. Например, для работы с любым enum:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public static class EnumExtensions { public static string GetDescription(this Enum enumerationValue) { Type type = enumerationValue.GetType(); MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); if (memberInfo != null && memberInfo.Length > 0) { object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return ((DescriptionAttribute)attrs[0]).Description; } } return enumerationValue.ToString(); } } |
Таким образом, вы сможете использовать этот метод для любого enum в вашем проекте.