我使用Display DataAnnotation属性修饰了以下枚举:
public enum RequiredOptions
{
[Display(Name="Optional",Description ="Optional")]
Optional,
[Display(Name="Not Used",Description ="Not Used")]
NotUsed,
[Display(Name="Required",Description ="Required")]
Required
}
我想在我的代码中读出给定枚举值的Display属性的Name值。我该怎么做?
public static string DisplayRequiredOptionName(RequiredOptions opt)
{
// Return the value of Name from the display attribute from opt
}
答案 0 :(得分:0)
好吧,在对MVC源代码进行一些挖掘之后(参见src \ System.Web.Mvc \ Html \ SelectExtensions.cs,参见GetDisplayName()),这就是我的工作:
public static string GetEnumDisplayName<T>(T enumInstance)
{
return GetDisplayName(enumInstance.GetType().GetField(enumInstance.ToString()));
}
private static string GetDisplayName(FieldInfo field)
{
DisplayAttribute display = field.GetCustomAttribute<DisplayAttribute>(inherit: false);
if (display != null)
{
string name = display.GetName();
if (!String.IsNullOrEmpty(name))
{
return name;
}
}
return field.Name;
}