4

次のような属性を持つ2つのオブジェクトがあります。

オブジェクト1:

  • 名前
  • 位置
  • 住所

オブジェクト2:

PersonRule

  • PersonName
  • PersonLocation
  • 人物

PersonRuleは、個人ルールを設定するUIによって駆動され(多くを設定することもできます)、ユーザーはルールに含める名前、場所、年齢を指定します。人が属性に同じ値を持っている場合、このルールは人と照合する必要があります。

簡単な同等性チェックを行うことはできますが、将来的には、personaddressなどの新しい属性がpersonルールに追加される可能性もあります。次に、個人の住所も考慮して、ルールが個人と一致するかどうかを確認する必要があります。

新しい属性がルールに追加されたときに変更を加える必要がないように、personruleのすべての属性をperson属性に一致させるようなものを構築する方法はありますか?もちろん、これは、対応する属性がpersonオブジェクトで使用可能であることを前提としています。

ありがとう、-マイク

4

2 に答える 2

8

AutoMapperEmitMapperなどの利用可能なオブジェクト間マッパーライブラリの1つを使用できます。彼らは、別のPersonRuleインスタンスと比較できるPersonインスタンスからPersonRuleインスタンスへのデータのコピーを処理します。たとえば、EmitMapperを使用すると、コードは次のようになります。

var config = new DefaultMapConfig().MatchMembers((m1, m2) => "Person" + m1 == m2);
ObjectMapperManager.DefaultInstance
                   .GetMapper<Person, PersonRule>(config)
                   .Map(person, personRule);
于 2012-06-04T12:09:44.170 に答える
0

リフレクションを探しているようです。このサンプルの質問を参照してください。

クラスのプロパティのリストを取得するにはどうすればよいですか?

于 2012-06-04T12:04:56.637 に答える