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

标签 c# asp.net-core automapper

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

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

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

(Asp Net Core,最新版automapper)

最佳答案

调用 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"]

The docs .

关于c# - 向 Automapper ForMember 添加额外参数的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67788867/

相关文章:

c# - 将多个内阁文件捆绑在一起? (适用于 Windows 移动设备)

c# - 如何将两个不同类型的列表合并为一个包含两种类型的新类型列表?

c# - .NET Core 中的 WebUtility.HtmlDecode 替换

asp.net-core - .NET Core 是否支持 SqlDependency?

c# - AutoMapper 将目标对象上的属性设置为 null

c# - 如何在 Windows 窗体应用程序中获取 MP3 文件的 BPM 属性

c# - 在 DataGridView 中将最后一行设置为 Frozen

asp.net-core - 如何在 ASP.NET 5 中使用 JavaScriptSerializer?

entity-framework - 如何使用 AutoMapper 映射外键值?

Automapper 编译映射 asp.net core