我有许多类的设置映射,但是在某些情况下,我将要应用一些自定义映射或将值应用于不会被映射的其他属性,我之所以不能集中进行此自定义映射是因为上下文相关,因此变量/属性将不可用。
我可以在AutoMapper中绑定一个事件,以便在调用Mapper.Map之后填充某些属性吗?
最佳答案
您可以如下创建映射:
Action<object,object> beforeMap = (src, dst) => { Console.WriteLint("BeforeMap"); };
Mapper.CreateMap<Src, Dst>().BeforeMap((src, dst) =>
{
if(beforeMap!=null)
beforeMap(src,dst);
});
Mapper.Map(new Src(), new Dst()); // - output: BeforeMap
并在需要上下文相关的BeforeMap处理程序时设置新的beforeMap。如果不需要其他操作,只需将beforeMap设置为null。
beforeMap = (src, dst) => { Console.WriteLint("NEW BeforeMap") };
Mapper.Map(new Src(), new Dst()); // - output: NEW BeforeMap
您可以对AfterMap执行相同的操作。
关于c# - 映射项目时AutoMapper中的事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11168466/