В приложении WinRT.NET(С#) я хочу получить пользовательские атрибуты, определенные по значению перечисления. Возьмем следующее перечисление, например:
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
Теперь в "нормальном".NET я знаю, что я могу получить пользовательские атрибуты значения enum с помощью enumValue.GetType().GetMember(enumValue.ToString())
.
К сожалению, в WinRT.NET метод GetMember()
недоступен в классе Type.
Любые предложения, как это сделать?
=============================================== ======
Благодаря 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>();
}
}