Вот что мы используем для наших приложений MVC, чтобы получить отображаемое имя для наших перечислений Он использует пользовательский атрибут и метод расширения для получения отображаемого имени перечисления.
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
public class EnumDisplayNameAttribute : Attribute
{
public EnumDisplayNameAttribute(string displayName)
{
DisplayName = displayName;
}
public string DisplayName { get; set; }
}
public static string GetDisplayName(this Enum enumType)
{
var displayNameAttribute = enumType.GetType()
.GetField(enumType.ToString())
.GetCustomAttributes(typeof(EnumDisplayNameAttribute), false)
.FirstOrDefault() as EnumDisplayNameAttribute;
return displayNameAttribute != null ? displayNameAttribute.DisplayName : Enum.GetName(enumType.GetType(), enumType);
}
Использование в перечислении:
public enum Foo
{
[EnumDisplayName("Foo Bar")]
Bar = 0
}
Возвращаем отображаемое имя:
var f = Foo.Bar;
var name = f.GetDisplayName();