映射到基于源的备用目标类

本文关键字:备用 目标 于源 映射 | 更新日期: 2023-09-27 18:18:28

Automapper允许您定义映射并使用以下语法调用它:

Mapper.CreateMap<Order, OrderDto>();
OrderDto dto = Mapper.Map<OrderDto>(order);

是否可以使用排序谓词指定目标类型?

Mapper.CreateMap<Order, FooType>().Where(s => s["_type"].ToString() == "Foo");
Mapper.CreateMap<Order, BarType>().Where(s => s["_type"].ToString() == "Bar");
FooTypeBarType都有对应于源类型内部字典中单独键值的内部属性。

为了正确映射这些值,我需要确保它们存在,这在本例中是由_type键的值决定的。

Edit:如果这是可能的,使用Mapper.Map<>();的语法是什么?

映射到基于源的备用目标类

您可以为每个属性设置一个映射条件,请看以下示例:

Mapper.CreateMap<Foo,Bar>()
      .ForMember(dest => dest.baz, opt => opt.Condition(src => (src.baz >= 0))); 

   Mapper.CreateMap<Source, Target>()
        .ForMember(dest => dest.Value, 
                   opt => opt.MapFrom
                   (src => src.Value1.StartsWith("A") ? src.Value1 : src.Value2));