不同的映射取决于封闭类

本文关键字:取决于 映射 | 更新日期: 2023-09-27 18:19:05

假设我有一个SourceClass:

public class SourceClass
{
    IList<InnerClass> InnerCollection{get; set;}
    // other properties...
}

和两个不同的目标类

public class DestinationClass1
{
    IList<InnerClassDto> InnerCollection{get; set;}
    // other properties...
}
public class DestinationClass2
{
    IList<InnerClassDto> InnerCollection{get; set;}
    // other properties...
}

最后我配置了我的映射器:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<SourceClass, DestinationClass1>();
    cfg.CreateMap<SourceClass, DestinationClass2>();
    cfg.CreateMap<InnerClass, InnerClassDto>();
});

但是我需要根据"父"类在我的目标类中填充IList<InnerClassDto>。特别是我需要为DestinationClass1过滤一些元素,而为DestinationClass2保留所有元素。

用Automapper实现这一点的正确方法是什么?这可能吗?

不同的映射取决于封闭类

您可以在映射配置中指定过滤器:

Mapper.CreateMap<SourceClass, DestinationClass1>()
    .ForMember(dest => dest.InnerCollection, 
        opt => opt.MapFrom(src => src.InnerCollection.Where(o => o.Value == src.CustomValue)));