1

自動マッパーを使用してリストを調整するにはどうすればよいですか?

たとえば、与えられたクラス

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 *以下をチェックするコードに置き換える必要があります:

  1. null の場合、RHS をすべてコピーします。
  2. null でない場合は、LHS に同じメンバーがあるかどうかを確認しId、そうでない場合は RHS からメンバーを追加します。
  3. LHS に同じ がある場合は、一致するエンティティのプロパティをId更新するだけです。Name
  4. LHS にIdRHS に存在しない がある場合はId、LHS から を削除します。

この種の比較を行うために、同じラムダ デリゲートで LHS と RHS のインスタンスを取得できないため、どこから始めればよいかさえわかりません。少なくとも組み込みオプションのどれも、この種のマッピングを行うことができないようです。これはかなり一般的な使用例だと思います。

助けてください。

4

0 に答える 0