是否有人知道在每个地图条件下对源的属性进行条件映射的方法(或变通方法)?
此处的目的是基于Web服务操作参数有条件地映射子对象的集合。 如:
Parent GetParent(bool includeChildren);
到目前为止,我发现唯一可行的解决方案是创建一个包装类来添加一个布尔属性,如:
public class ParentMapper
{
Parent Parent;
public bool IncludeChildren {get;set;}
}
或者直接在模型源类上添加IncludeChildren属性,因为目的混合,我真的不喜欢。
完美的解决方案就像:
TDestination Map<TSource, TDestination>(TSource source, bool includeCollections);
但我不认为我会为此提供有效的解决方案。
任何帮助将不胜感激......
答案 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
}
});