18.AutoMapper 之条件映射(Conditional Mapping)
条件映射(Conditional Mapping)
AutoMapper 允许你给属性添加条件,只有在条件成立的情况下该成员才会被映射。
这可以用在尝试将int 映射到 无符号 int的情况下。
class Foo{
public int baz;
}
class Bar {
public uint baz;
}
在以下映射中属性baz只有在源属性baz大于等于零的情况下才会被映射。
Mapper.Initialize(cfg => {
cfg.CreateMap<Foo,Bar>()
.ForMember(dest => dest.baz, opt => opt.Condition(src => (src.baz >= 0)));
});
前提条件
类似的还有一个前提条件。不同之处在于它比映射处理运行的更早,在源值解析之前(想想MapFrom 或者 ResolveUsing)。前提条件被调用之后,再解析映射的源是哪个,然后条件被调用自己完成目标值得分配。