向 Automapper ForMember 添加额外参数的简单方法
Simple way to add extra parameter to 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"]
所以,我有一个 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"]