jk's notes
  • 配置校验 Configuration Validation

配置校验 Configuration Validation

jk: 这个校验时什么含义???

手动映射的优点是可测试. 但 AutoMapper 采用命名约定的形式进行映射, 但如果存在命名无法匹配的情况, 就需要自定义配置了.

验证的时候可以调用 config.AssertConfigurationIsValid(), 如果验证失败, 会抛出异常.

image-20240102004549884

image-20240102005011791

重写配置错误

要处理配置的错误 (除了对源类型与目标类型成名改名之外), 有三个方案可以选择:

  • 自定义 Value Resolvers
  • 投影 (Projection)
  • 使用 Ignore() 选项

对于第三个方法, 我们采用其他方式来为其赋值, 而不是 Map:

var conf = new MapperConfiguration(cfg => {
  cfg.CreateMap<Source, Destination>()
    .ForMember(dest => dest.SomeValuefff, opts => opts.Ignore())
});

jk: 按照后续介绍, 上面这个应该被称为 投影. 本节主要是针对, 验证匹配的结果, 以及如何处理错误.

选择要验证的成员

默认, AutoMapper 使用目标类型来验证成员. 假定所有的目标类型的成员都需要被映射. 修改该行为, 使用 CreateMap 重载, 来指定需要根据哪个成员列表来验证:

var conf = new MapperConfiguration(cfg => {
  cfg.CreateMap<Source, Destination>(MemberList.Source);
});

要跳过验证, 使用 MemberList.None, 这是 ReverseMap 的默认配置.

自定义验证

自定义验证可以参考这里.

这里是一段 GitHub 示例代码.

Last Updated:
Contributors: jk