name attribute c# .net reflection data-annotations propertyinfo

c# - name - Obtenga el atributo DisplayAttribute de PropertyInfo



get display name attribute c# (1)

class SomeModel { [Display(Name = "Quantity Required")] public int Qty { get; set; } [Display(Name = "Cost per Item")] public int Cost { get; set; } }

Estoy tratando de asignar el modelo a una lista de pares { PropertyName, DisplayName } , pero me he quedado atascado.

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

Lo anterior no compila y no estoy seguro de que sea el enfoque correcto de todos modos, pero espero que pueda ver la intención. Cualquier punteros? Gracias


Es necesario definir diferentes nombres de propiedades para el tipo anónimo.

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 });