友人で問題が発生しました:
、(...「サン」、「20」)テキスト内の文字列から知られているタイプ(「文字列」、「INT」....)の文字列を読みます
所望のクラスオブジェクトに変換されます。
データが大きく、頻繁に使用することは、次のように小さなデモを書き込むので、反射の効率に影響を与える可能性があります。
Personクラス:
1 クラス人 2 { 3。 公的 列 XM { GET、SET ;} 。4 パブリック INT NL { GET、SET ;} 。5 公共 ボイドSHOWME() 。6 { 7 Console.WriteLineを(" I " + XM + " 私は"。 + NL + " 歳。" ); 8 } 9 }
変換ヘルパークラス:
クラスConvert_Helper { 静的PropertyInfo [] PS; // 葉式、反射バックのすべてのパブリックプロパティ パブリック 静的 ボイド get_Props <T> (T TT) { PS = tt.GetType()GetPropertiesの();. } // 文字に文字列とタイプ、指定の戻り値の型 のパブリック 静的 動的 change_Type(文字 X、文字列x_type) { IF(x_type == " INT " ) { 戻り INT .Parse(X); } 戻りX; } // オブジェクト、および割り当てられたオブジェクトの種類に。 パブリック 静的 ボイド GET_OBJECT(ダイナミック OBJ、文字列 [] MyValues、文字列[] ValueTypeに) { ため(INT Iは= 0 ; I <myvalues.Length; I ++ ) { PS [I] .setValue(OBJ、change_Type(MyValues [I] 、ValueTypeに[I])、NULL ); } } }
メインプログラム:
1 静的 ボイドメイン(文字列[]引数) 2 { 3 列[] V1、T1。 4 リスト<人> mylistという= 新しいリスト<人> (); 5 人のトン。 6 Convert_Helper.get_Props(新しい人()); 7 8 T = 新しい人(); 9 V1 = 新しい 文字列 [ 2 ] { " 张三"、" 20 " }。 10 T1 = 新しい 文字列 [ 2 ] { " ストリング"、" INT " }。 11 Convert_Helper.get_Object(T、V1、T1)。 12 mylist.Add(T)。 13 14 、T = 新しい人(); 15 V1 = 新しい 文字列 [ 2 ] { " 李四"、" 18 " }。 16 T1は= 新しい 文字列 [ 2 ] { "文字列" " INT " }; 17 Convert_Helper.get_Object(T、V1、T1); 18 mylist.Add(T); 19 20 foreachの(VARの項目でマイリスト) 21 { 22 item.showme(); 23 } 24 コンソール.ReadKey(); 25 }
属性は、わずかに修正get_Props方法に対応しない場合、テキストは、2次元アレイまたは他のバルクの形態である、わずかに変更メインルーチンも、この、。
読者は難しい自分自身ではありません。