人本善良

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

05.AutoMapper 之配置验证(Configuration Validation)

https://www.jianshu.com/p/5901a5d1ef15

配置验证(Configuration Validation)

手写映射配置代码虽然繁琐,但具有可测试的优点。AutoMapper背后的设计灵感之一是不仅消除了自定义映射代码,而且消除了手动测试的需要。由于从源到目标的映射是基于约定的,因此您仍需要测试配置。

AutoMapperAssertConfigurationIsValid方法的形式提供配置测试。 假设我们的源和目标类型有错误配置:

public class Source
{
    public int SomeValue { get; set; }
}

public class Destination
{
    public int SomeValuefff { get; set; }
}

在目标类型中我们可能手抖打错了目标属性名或者重命名了源类型的属性名。要测试配置,只需创建一个单元测试来设置配置并执行AssertConfigurationIsValid方法:

Mapper.Initialize(cfg =>
  cfg.CreateMap<Source, Destination>());

Mapper.Configuration.AssertConfigurationIsValid();

执行以上代码会产生AutoMapperConfigurationException,并带有描述性消息。 AutoMapper检查配置以确保每个目标类型成员在源类型上都有相应类型的成员。

重写配置错误

要修复配置错误(除了重命名源/目标成员),您有三种备选方案:

  • Custom Value Resolvers
  • Projection
  • Use the Ignore() option

使用第三个选项时,将用Ignore()填充对应目标类型上的成员,而不是通过Map操作。

Mapper.Initialize(cfg =>
  cfg.CreateMap<Source, Destination>()
    .ForMember(dest => dest.SomeValuefff, opt => opt.Ignore())
);

选择要验证的成员

默认情况下,AutoMapper使用目标类型所有成员是否都已经被映射来验证配置。使用CreateMap重新指定要验证的成员列表:

Mapper.Initialize(cfg =>
  cfg.CreateMap<Source, Destination>(MemberList.Source);
  cfg.CreateMap<Source2, Destination2>(MemberList.None);
);

使用MemberList.None跳过此映射验证。

posted on   简简单单2018  阅读(324)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示