gpt4 book ai didi

c# - Automapper:使用 BeforeMap 和 AfterMap

转载 作者:太空狗 更新时间:2023-10-30 01:11:21 25 4
gpt4 key购买 nike

我正在使用 automapper(成功达到一定程度)在两个接口(interface)之间执行多态映射,如下所示:

configure.CreateMap<IFrom, ITo>()
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;

这很好用。此外,接口(interface)还包括方法签名,其实现旨在在映射之前修改对象:

public interface IFrom
{
void PrepareForMapping();
}

如您所见,该方法没有返回值,但旨在在执行映射之前修改对象的状态。目前这个方法是在映射对象之前手动调用的,但我的意图是在映射发生之前自动执行该方法。我尝试按如下方式使用它:

configure.CreateMap<IFrom, ITo>()
.BeforeMap((x,y) => x.PrepareForMapping())
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;

然而,该方法从未被调用,尽管映射本身仍然工作正常。我在 PrepareForMapping() 方法的每个实现上都放置了断点,但没有一个被击中。所以我得出结论,我要么误解了 BeforeMap/AfterMap 的工作原理,要么我做错了什么(或两者都有)。

非常感谢。

最佳答案

对于这一个,您必须将 Before/After 映射放在派生类型上。这是因为 Include 将映射重定向到多态类型。这不是附加配置,Included maps 替换了配置。

关于c# - Automapper:使用 BeforeMap 和 AfterMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com