c# - 向 Automapper ForMember 添加额外参数的简单方法
问题描述
所以,我有一个 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"]
文档。
推荐阅读
- macos - 单击“显示标签栏”时没有加号按钮
- imagemagick - 调整大小模糊
- python - 为什么芹菜周期性任务只触发一次功能
- powerbi - Power BI 中的折线图
- python - 如何避免在 pandas 的整个列中出现 NaN?
- java - TaskStackBuilder 无法通过通知工作
- python - Python - 在 __iter__ 方法中设置变量
- python - 给定 2 个字符串,返回两个字符串包含相同长度的 2 子字符串的位置数
- java - 为什么这个 for 循环会显示 4 和 5 之前的数字?
- java - 无法运行 mvn release:使用捆绑的 Maven 从 IntelliJ 准备