首页 > 解决方案 > 向 Automapper ForMember 添加额外参数的简单方法

问题描述

所以,我有一个 ObjectFrom 到 ObjectTo 的映射。' 所有的映射都可以通过 ObjectFrom.propX -> ObjectTo.propX2 来完成。但是 ObjectTo 中还有一个属性需要有一个固定值(对于每个映射),我们称之为“CallerName”,它与 ObjectFrom 无关。

我可以以某种方式潜入一个额外的参数到映射中吗?我不想包装我的 ObjectFrom 也不使用 AfterMap(),因为我想强制调用者提供 CallerName 以确保它被填充。

在谷歌上搜索时,我发现一种解决方案比另一种更复杂。有没有一种简单的方法可以做到这一点?

(Asp Net Core,最新版 automapper)

标签: c#asp.net-coreautomapper

解决方案


调用 map 时,您可以通过使用键值和使用自定义解析器从上下文中获取对象来传递额外的对象。

mapper.Map<Source, Dest>(src, opt => opt.Items["Foo"] = "Bar");

这是为此自定义解析器设置映射的方法

cfg.CreateMap<Source, Dest>()
.ForMember(dest => dest.Foo, opt => opt.MapFrom((src, dest, destMember, context) => context.Items["Foo"]

文档


推荐阅读