下面是我們用於我們的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();
我應該指出,枚舉的基礎值不能是字符串。 `enum的批准類型是字節,sbyte,short,ushort,int,uint,long或ulong.` http://msdn.microsoft.com/en-us/library/sbbt4032.aspx – Greg 2011-02-02 16:03:13
我想指向你Mark的答案......在我看來,這是非常優雅的解決方案。 – 2013-02-08 13:06:10