こんにちは、mottYです。業務は専らC#なので、
備忘録として残していきます。
モデルがあったとする。
classModel{[DisplayName("ID")]publicintID{get;set;}[DisplayName("名前")]publicstringName{get;set;}[DisplayName("住所")]publicstringAdress{get;set;}[DisplayName("郵便番号")]publicstringZIPCODE{get;set;}[DisplayName("誕生日")]publicDateTimeBirthDay{get;set;}[DisplayName("誕生月")]publicstringBirthMonth{get{returnBirthDay.ToString("yyyyMM");}}}
プロパティ名を全てゲットする
staticList<string>GetProperties(objectmodel){List<string>result=newList<string>();Typet=model.GetType();//クラスの全情報を取得 MemberInfo[]properties=t.GetProperties();//すべてのプロパティを取得(DisplayName,Regularexpressions等)foreach(MemberInfomemberinmembers){result.Add(member.Name);}returnresult;}
メタデータ(DisplayName)を全てゲットする
staticList<string>GetDisplayNames(Typet){List<string>result=newList<string>();MemberInfo[]members=t.GetMembers(BindingFlags.Public|BindingFlags.Instance);foreach(MemberInfominmembers){vardispattr=m.GetCustomAttribute(typeof(DisplayNameAttribute),false)asDisplayNameAttribute;if(dispattr!=null){//Displaynameの定義のある列のみ出力result.Add(dispattr.DisplayName);}}returnresult;}
起点はGetType()
はじめにGetTypeにより型情報を全て格納したType型のtを得る。そこから得たい情報に応じて適切なメソッドをmemberinfo[]に格納していく。すると、それぞれがForeach()メソッドで取得できる。