@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 в вашем проекте.