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

4

所以,我有一个将ObjectFrom映射为ObjectTo的映射对象。

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

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

在Google上搜索了这个问题后,我发现一个解决方案比另一个更复杂。是否有一种简单的方法来解决这个问题?

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


1
https://docs.automapper.org/en/latest/Custom-value-resolvers.html#passing-in-key-value-to-mapper - Lucian Bargaoanu
谢谢!如果您将其粘贴到回复中,我可以将您的答案设置为正确答案。 - Cowborg
1个回答

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

该文档

,与定制值解析器相关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接