Automapper条件集合映射

时间:2012-06-11 08:11:00

标签: c# automapper

是否有人知道在每个地图条件下对源的属性进行条件映射的方法(或变通方法)?

此处的目的是基于Web服务操作参数有条件地映射子对象的集合。 如:

Parent GetParent(bool includeChildren);

到目前为止,我发现唯一可行的解​​决方案是创建一个包装类来添加一个布尔属性,如:

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

或者直接在模型源类上添加IncludeChildren属性,因为目的混合,我真的不喜欢。

完美的解决方案就像:

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

但我不认为我会为此提供有效的解决方案。

任何帮助将不胜感激......

1 个答案:

答案 0 :(得分: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
                 }
            });