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