Automapper 6 でマッピング中にすべてのソース メンバーの null 値を無視するにはどうすればよいでしょうか? 質問する

Automapper 6 でマッピング中にすべてのソース メンバーの null 値を無視するにはどうすればよいでしょうか? 質問する

私はあらゆる場所を探しました: stackoverflow、automapper ドキュメント、インターネットですが、これは非常に一般的な問題のようですが、この問題に関する情報はまったく見つかりませんでした。

私のマッピング:

CreateMap<StatusLevelDTO, StatusLevel>()
            .ForAllMembers(opt => opt.Condition(src => src != null));

これは、src がソース プロパティ (私の考えでは) ではなくソース オブジェクト (StatusLevelDTO) を表しているため機能しません。

具体的には、ObjectA を ObjectB にマップする場合、ObjectA.SomeValue は null で、ObjectB.SomeValue は 2 なので、宛先オブジェクトの値 (2) を保持します。

こんな質問を見たことがあります:Automapper はカスタム リゾルバを使用して null 値をスキップします最初の 2 つの回答を試しましたが、どちらもバージョン 6 では古くなっているようです。

Automapper 6 でこれを実現する方法はありますか? 正確には 6.0.2 を使用しています。

ベストアンサー1

方法Condition現在5つのオーバーロードがあり、そのうちの1つは型の述語を受け入れます

Func<TSource, TDestination, TMember, bool>

この TMember パラメータはソース メンバーです。したがって、ソース メンバーが null かどうかを確認できます。

CreateMap<StatusLevelDTO, StatusLevel>()
     .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));

おすすめ記事