1

マップ条件ごとにソースのプロパティを条件付きマップする方法 (または回避策) を知っている人はいますか?

ここでの目的は、Web サービス操作パラメーターに基づいて子オブジェクトのコレクションを条件付きでマップすることです。そのような:

Parent GetParent(bool includeChildren);

これまでのところ、私が見つけた唯一の実行可能な解決策は、次のようなブール型プロパティを追加するラッピング クラスを作成することでした。

public class ParentMapper
{
    Parent Parent;
    public bool IncludeChildren {get;set;}
}

または、モデル ソース クラスに IncludeChildren プロパティを直接追加することは、目的が混在しているため、あまり好きではありません。

完璧な解決策は次のようなものです。

TDestination Map<TSource, TDestination>(TSource source, bool includeCollections);

しかし、そのための効率的な解決策が得られるとは思えません。

どんな助けでも大歓迎です...

4

1 に答える 1

1

現在、これを実現するための組み込み機能はありません。ただし、次のことを行うことができます。

var destinations = Mapper.Map<List<Parent>, List<ParentDto>>(
    sources.Where(source => source.Child !=null)
);

これを行う別の方法は次のとおりです。

config.CreateMap<Parent, ParentDto>()
            .AfterMap((source, dest) =>
            {
                 if (source.Child !=null)
                 {
                     //do some stuff here
                 }
            });
于 2012-06-18T04:11:00.693 に答える