2011-09-07 11 views
17
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 { PropertyName, DisplayName } pares, pero me he quedado atascado.Obtener el atributo DisplayAttribute desde PropertyInfo

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

Lo anterior no se compila y no estoy seguro de que es el enfoque correcto de todos modos, pero con suerte se puede ver la intención. ¿Alguna sugerencia? Gracias

Respuesta

25

Debe 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 
     }); 
+0

Perfecto, gracias – fearofawhackplanet

+0

@fearofawhackplanet, ¡De nada! –

Cuestiones relacionadas