Webサービスから生成された部分クラスがあります。ModelMetadata
私はこのクラスに次のように追加します:
// Automatically generated code
public partial class MyClass
{
public string FIELD_ONE ...
public DateTime? FIELD_TWO ...
}
// My code
[MetadataType(typeof(MyMetaDataClass))]
public partial class MyClass
{
}
public class MyMetaDataClass
{
[Display(Name="Field One")]
public string FIELD_ONE;
[Display(Name="Field Two")]
public DateTime? FIELD_TWO;
}
MyClass
ここで、メタデータの表示属性を持つすべてのプロパティ、つまり、FIELD_ONE
を取得したいと思いますFIELD_TWO
。
私は次のようなことを試しました
typeof(MyClass).GetProperties().Where(p => Attribute.IsDefined(typeof(DisplayAttribute))
ただし、もちろん、属性はのプロパティにはありませんMyClass
。私も試しました:
ModelMetadata mmd = ModelMetadata.FromLambdaExpression(m => pi.GetValue(m, null), Html.ViewData);
しかし、「テンプレートは、フィールドアクセス、プロパティアクセス、単一次元配列インデックス、または単一パラメーターのカスタムインデクサー式でのみ使用できます」というエラーが表示されます。
MyClass
からに到達できればMyMetadataClass
、そのプロパティ名を取得し、から同じ名前のプロパティを取得できる可能性がありますMyClass
。
これは可能ですか、それとも間違った木を吠えていますか?