我已经为许多类设置了映射,但是在某些情况下,我会想要应用一些自定义映射或将值应用于不会映射的其他属性,我不能集中执行此自定义映射的原因是因为它是上下文相关,因此变量/属性将不可用。
是否有我可以在 AutoMapper 中绑定的事件,以便在调用 Mapper.Map 后填充某些属性?
我已经为许多类设置了映射,但是在某些情况下,我会想要应用一些自定义映射或将值应用于不会映射的其他属性,我不能集中执行此自定义映射的原因是因为它是上下文相关,因此变量/属性将不可用。
是否有我可以在 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 执行相同的操作。