配置校验 Configuration Validation
jk: 这个校验时什么含义???
手动映射的优点是可测试. 但 AutoMapper
采用命名约定的形式进行映射, 但如果存在命名无法匹配的情况, 就需要自定义配置了.
验证的时候可以调用 config.AssertConfigurationIsValid()
, 如果验证失败, 会抛出异常.
重写配置错误
要处理配置的错误 (除了对源类型与目标类型成名改名之外), 有三个方案可以选择:
- 自定义 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 示例代码.