自動マッパーを使用してリストを調整するにはどうすればよいですか?
たとえば、与えられたクラス
public class SomeEntity
{
public Guid Id {get; set;}
public string Name {get; set;}
}
そして超充実のクラス
public class SomeAggregate
{
public IEnumerable<SomeEntity> EntityEnumeration {get;set;}
}
この質問のために(私の実際の要件は少し異なります)。SomeAggregate のインスタンスを別のインスタンスにマップする必要があります。AutoMapper を使用したいのですが、EntityEnumeration
入力方法をカスタマイズする必要があります。
これは私が達成しようとしているものです:
Mapper.CreateMap<SomeAggregate,SomeAggregate>()
.ForMember(d => d.SomeAggregate, *** MISSING LOGIC ***);
Mapper.Map(newInstance, existing);
* MISSING LOGIC *以下をチェックするコードに置き換える必要があります:
- null の場合、RHS をすべてコピーします。
- null でない場合は、LHS に同じメンバーがあるかどうかを確認し
Id
、そうでない場合は RHS からメンバーを追加します。 - LHS に同じ がある場合は、一致するエンティティのプロパティを
Id
更新するだけです。Name
- LHS に
Id
RHS に存在しない がある場合はId
、LHS から を削除します。
この種の比較を行うために、同じラムダ デリゲートで LHS と RHS のインスタンスを取得できないため、どこから始めればよいかさえわかりません。少なくとも組み込みオプションのどれも、この種のマッピングを行うことができないようです。これはかなり一般的な使用例だと思います。
助けてください。