在一个WinRT .NET应用程序(C#)中,我想获取在枚举值上定义的自定义属性。以以下枚举为例:
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
在“普通”的.NET中,我知道通过enumValue.GetType().GetMember(enumValue.ToString())
可以获取枚举值的自定义属性。
不幸的是,在WinRT .NET中,Type类上的GetMember()
方法不可用。
有什么建议吗?
=====================================================
感谢下面的Marc,我找到了答案!以下代码适用于在.NET 4.5 WinRT中从枚举值获取特定自定义属性:
public static class EnumHelper
{
public static T GetAttribute<T>(this Enum enumValue)
where T : Attribute
{
return enumValue
.GetType()
.GetTypeInfo()
.GetDeclaredField(enumValue.ToString())
.GetCustomAttribute<T>();
}
}