Получить атрибут DisplayAttribute из PropertyInfo - PullRequest
17 голосов
/ 07 сентября 2011
class SomeModel
{
    [Display(Name = "Quantity Required")]
    public int Qty { get; set; }

    [Display(Name = "Cost per Item")]
    public int Cost { get; set; }
}

Я пытаюсь отобразить модель в список из { PropertyName, DisplayName } пар, но я застрял.

var properties 
    = typeof(SomeModel)
        .GetProperties()
        .Select(p => new 
            {
                p.Name,
                p.GetCustomAttributes(typeof(DisplayAttribute),
                              false).Single().ToString()
            }
        );

Выше не компилируется, и я неКонечно, в любом случае это правильный подход, но, надеюсь, вы поймете цель.Есть указатели?Спасибо

1 Ответ

27 голосов
/ 07 сентября 2011

Вам необходимо определить разные имена свойств для анонимного типа.

var properties = typeof(SomeModel).GetProperties()
    .Where(p => p.IsDefined(typeof(DisplayAttribute), false))
    .Select(p => new
        {
            PropertyName = p.Name, p.GetCustomAttributes(typeof(DisplayAttribute),
                false).Cast<DisplayAttribute>().Single().Name
        });
...