Подтвердить что ты не робот

Получить пользовательские атрибуты значения enum

В приложении 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>();
    }
}
4b9b3361

Ответ 1

Вместо того, чтобы искать членов, вы, возможно, должны смотреть именно на поля. Если это не доступно в Type в WinRT, добавьте using System.Reflection; и используйте type.GetTypeInfo() и посмотрите там тоже, так как различные аспекты отражения перемещаются в тип info.