在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>();
}
}
答案 0 :(得分:14)
您应该专门查看字段,而不是寻找成员。如果在WinRT中的Type
上无法使用,请添加using System.Reflection;
并使用type.GetTypeInfo()
并在那里查看,因为各种反射方面都会移动到type-info。