Получить описание атрибута enum * subset * - PullRequest
1 голос
/ 19 февраля 2020

Я знаю, как получить описание каждого перечисления. Я пытаюсь выяснить, как получить его из подмножества .

Вот то, что у меня есть, и, я верю, показывает намерение того, к чему я стремлюсь:

public enum ModelType : int
{
    /// <summary>
    /// No model type. For internal use only.
    /// </summary>
    [Description("NA")]
    _NA = 0,  

    [Description("Literal Model")]
    Literal = 1,

    [Description("Linear Model")]
    Linear = 2,

    [Description("Curve Model")]
    Curve = 3
}


var values = Enum.GetValues(typeof(ModelType))
    .Cast<ModelType>()
    .Where(x => x > ModelType._NA)  // filter
    .ToArray();

var attributes = values.GetMembers() // this is wrong
    .SelectMany(member => member.GetCustomAttributes(typeof(DescriptionAttribute), true).Cast<DescriptionAttribute>())
    .ToList();

return attributes.Select(x => x.Description);

1 Ответ

2 голосов
/ 19 февраля 2020

Это должно работать:

var type = typeof(ModelType);

var propNames = Enum.GetValues(type)
    .Cast<ModelType>()
    .Where(x => x > ModelType._NA)  // filter
    .Select(x => x.ToString())
    .ToArray();

var attributes = propNames
    .Select(n => type.GetMember(n).First())
    .SelectMany(member => member.GetCustomAttributes(typeof(DescriptionAttribute), true).Cast<DescriptionAttribute>())
    .ToList();

return attributes.Select(x => x.Description);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...