向 Automapper ForMember 添加额外参数的简单方法

Cow*_*org 4 c# automapper asp.net-core

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

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

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

(Asp Net Core,最新版本的automapper)

Luc*_*anu 5

调用时,Map您可以使用键值和自定义解析器传入额外的对象,以从映射上下文中获取对象。

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

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

cfg.CreateMap<Source, Dest>()
.ForMember(dest => dest.Foo, opt => opt.MapFrom((src, dest, destMember, context) => context.Items["Foo"]);
Run Code Online (Sandbox Code Playgroud)

文档.