C# 自动映射:使用BeforeMap和AfterMap

C# 自动映射:使用BeforeMap和AfterMap,c#,automapper,C#,Automapper,我正在使用automapper(在一定程度上成功地)在两个接口之间执行多态映射,如下所示: configure.CreateMap<IFrom, ITo>() .Include<FromImplementation1, ToImplementation1>() .Include<FromImplementation2, ToImplementation2>() ... ; 正如您所看到的,该方法没有返回,但设计用于在执行映射之前修改对

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

configure.CreateMap<IFrom, ITo>()
    .Include<FromImplementation1, ToImplementation1>()
    .Include<FromImplementation2, ToImplementation2>()
    ... ;
正如您所看到的,该方法没有返回,但设计用于在执行映射之前修改对象的状态。目前,在映射对象之前手动调用此方法,但我的意图是在映射发生之前自动执行此方法。我尝试按如下方式使用它:

configure.CreateMap<IFrom, ITo>()
    .BeforeMap((x,y) => x.PrepareForMapping())
    .Include<FromImplementation1, ToImplementation1>()
    .Include<FromImplementation2, ToImplementation2>()
    ... ;
configure.CreateMap()
.BeforeMap((x,y)=>x.PrepareForMapping())
.包括()
.包括()
... ;
然而,尽管映射本身仍然可以正常工作,但该方法从未被调用。我在PrepareForMapping()方法的每个实现上都放置了断点,但没有一个被击中。所以我得出的结论是,我要么误解了前后图的工作原理,要么我做错了什么(或者两者都错了)


非常感谢。

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

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