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
この場合、匿名型の特定のプロパティ名を定義する必要があります。
var properties = typeof(SomeModel).GetProperties()
.Where(p => p.IsDefined(typeof(DisplayAttribute), false))
.Select(p => new
{
PropertyName = p.Name,
DisplayName = p.GetCustomAttributes(typeof(DisplayAttribute),
false).Cast<DisplayAttribute>().Single().Name
});