我正在使用automapper(成功地达到某一点)在两个接口之间执行多态映射,如下所示:
configure.CreateMap<IFrom, ITo>()
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
这个很好用。此外,接口还包括方法签名,其实现旨在在映射之前修改对象:
public interface IFrom
{
void PrepareForMapping();
}
如您所见,该方法没有返回,但其设计目的是在执行映射之前修改对象的状态。目前,这个方法是在映射对象之前手动调用的,但我的目的是在映射发生之前自动执行这个方法。我尝试如下使用:
configure.CreateMap<IFrom, ITo>()
.BeforeMap((x,y) => x.PrepareForMapping())
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
然而,尽管映射本身仍然工作良好,但从未调用该方法。我在PrepareForMapping()方法的每个实现上都放置了断点,但没有一个被击中。所以我得出的结论是,我要么误解了地图绘制之前/之后的工作方式,要么是我做错了什么(或两者兼而有之)。
多谢。