Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9309

【C#】クラスのデータを取得する方法

$
0
0

こんにちは、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()メソッドで取得できる。


Viewing all articles
Browse latest Browse all 9309