В приложении WinRT .NET (C#) Я хочу получить пользовательские атрибуты, которые определены в значении перечисления. Возьмет следующее перечисление, например:Получить пользовательские атрибуты значения перечисления
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
В настоящее время в «нормальном» .NET Я знаю, что я могу получить пользовательские атрибуты значения перечисления с 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>();
}
}
Пожалуйста, префикс юрских названий с «WinRT C#:» и т. Д. Для этого нужны теги. –
Это невозможно. Тип.GetMember все еще присутствует в .Net 4.5! – logicnp
@logicnp: API WinRT является подмножеством полного .NET API. –