エンティティを行うスイッチング動作は、一般的に相互変換する二つの同じクラスの属性フィールドで2つのエンティティ間で必要とするとき、我々は目標値をたいオブジェクトBのすべてのフィールドにコピーされ、我々だけ使用することができます書き込みに、B。プロパティ=。属性すぎ属性フィールド場合は、C#の反射が複製を達成するためにするとき、これは使用することができ、その後、我々はコピーステートメントに行の多くを書くでしょうし、また簡単にいくつかを欠場します。
データソースとして割り当てエンティティからエンティティを作成するために適用される1
/// <まとめ> /// 反射体は、2つのクラス間のオブジェクトの同じ属性値を達成するために、複製 ///は、新しいエンティティの初期化に適用される /// </要約> /// <typeParam名=「D」> 戻るエンティティ</ typeParam> /// <typeParam名= "S"> データソースエンティティ</ typeParam> /// <PARAM NAME = "S"> データソースエンティティ</ param>の /// <リターン> 戻ります新しいエンティティ</戻り> パブリック 静的 Dマッパー<D、S> (S S) { D D = Activator.CreateInstance <D>();// の構成の新しいインスタンス 試し { VARの種類s.GetType =(); //取得型 VAR型付き= typeof演算(D); foreachの(SP PropertyInfo で Types.GetProperties())// のtype属性のフィールドを取得 { foreachの(DP PropertyInfo でTyped.GetPropertiesを()) { IF(dp.Name == SP。 == sp.PropertyType && && dp.PropertyType名dp.Name!= " エラー" && dp.Name!= " 項目")// 同じname属性か否かを判定し 、{ dp.SetValue(D、sp.GetValue(S、ヌル)、NULL); // オブジェクトdの特性値s得られたコピー・オブジェクトのプロパティ } } } } キャッチ(例外EX) { スローEX; } リターンD; }
2つのエンティティ間のデータを変換し作成していないエンティティの2、
/// <まとめ> /// 反射を実現2つのオブジェクト間の同じ属性クラスの値を複製 /// 新しいエンティティ間適用 /// </要約> /// <typeParam名=「D "> 戻りエンティティ</ typeParam> /// <typeParam名=" S "> データソースエンティティ</ typeParam> /// <PARAM NAME =" D「> エンティティ戻る</ PARAM> /// <PARAM NAME = "S"> データソースエンティティ</ PARAM> /// <戻り値> </戻り> パブリック 静的 D MapperToModel <D、S> (D D、S S) { 試み { VARのタイプ= S.メソッドGetType(); //は型を取得 VARを=型付きtypeof演算(D); foreachの(SP PropertyInfo で Types.GetProperties())//はのtype属性のフィールドを取得 { foreachの(DP PropertyInfo でTyped.GetPropertiesを()) { IF(DP && dp.Name == sp.Name == sp.PropertyType && dp.Name .PropertyType!= " エラー" && dp.Name!= " 項目")// 決定し、同じname属性かどうか { dp.SetValue(D、sp.GetValue(S、ヌル)、ヌル);// オブジェクトDの特性値s得られたコピー・オブジェクトのプロパティ } } } } キャッチ(例外EX) { スローEX; } リターンD; }