【发布时间】:2012-03-08 21:29:25
【问题描述】:
我在 ViewModelBase 类中有以下辅助方法,它被其他视图模型继承:
public string GetEnumName<T>(Enum value)
{
Type enumType = typeof(T);
var enumValue = Enum.GetName(enumType, value);
MemberInfo member = enumType.GetMember(enumValue)[0];
var attrs = member.GetCustomAttributes(typeof(DisplayAttribute), false);
var outString = ((DisplayAttribute)attrs[0]).Name;
if (((DisplayAttribute)attrs[0]).ResourceType != null)
{
outString = ((DisplayAttribute)attrs[0]).GetName();
}
return outString;
}
然后我从这样的视图中调用它:
<p>
@{var rel = Model.GetEnumDisplayName<Enums.wheteverEnum>(Model.wheteverEnum); }
@rel
</p>
问题是——我可以使用这种方法,这样我就不必告诉它enum 的类型了吗?基本上我想为所有enums 做这个:
@Model.GetEnumDisplayName(Model.wheteverEnum)
没有typeof,没有T,不需要在视图中添加对Enums命名空间的引用...
可能吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 generics c#-4.0 enums