2011-09-07 18 views
17
class SomeModel 
{ 
    [Display(Name = "Quantity Required")] 
    public int Qty { get; set; } 

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

私はこのモデルを{ PropertyName, DisplayName }のペアのリストにマップしようとしていますが、私は立ち往生しています。PropertyInfoからDisplayAttribute属性を取得

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

上記はコンパイルできないと私はそれがとにかく正しいアプローチだわからないんだけど、うまくいけば、あなたは意図を見ることができます。すべてのポインタ?ありがとう

答えて

25

匿名の種類には異なるプロパティ名を定義する必要があります。

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

完璧、ありがとうございました – fearofawhackplanet

+0

@fearofawhackplanet、よろしくお願いします! –

関連する問題