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 回答