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)。前提条件被调用之后,再解析映射的源是哪个,然后条件被调用自己完成目标值得分配。

推荐阅读更多精彩内容