06.AutoMapper 之内联映射(Inline Mapping)
https://www.jianshu.com/p/623655d7cb34
内联映射(Inline Mapping)
AutoMapper
在 6.2 以上版本将动态创建类型映射。 当第一次调用Mapper.Map
时,AutoMapper
将创建类型映射配置并编译映射计划。 之后再调用将使用已编译的映射。
内联配置
要配置内联映射,请参考以下例子:
var source = new Source();
var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap().ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10)));
您可以使用本地函数使配置更容易阅读:
var source = new Source();
void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
opt.ConfigureMap()
.ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10))
};
var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);
您还可以在此内联映射中获取和使用运行时的值:
int valueToAdd = 10;
var source = new Source();
void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
opt.ConfigureMap()
.ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + valueToAdd))
};
var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);
内联验证
第一次使用映射时,AutoMapper 将使用默认验证配置来验证映射(目标成员必须全部被映射)。之后调用映射将跳过验证。这可确保安全地映射对象。
在执行每一个映射时根据配置的验证成员列表来决定验证源、目标还是不验证:
var source = new Source();
var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap(MemberList.None);
也可以完全关闭内联映射验证(除非确保已经测试所有映射,否则不建议这样做):
Mapper.Initialize(cfg => cfg.ValidateInlineMaps = false);
禁用内联映射
关闭内联映射:
Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = false);
分类:
Automapper
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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搭建本