我有许多类的设置映射,但是在某些情况下,我将要应用一些自定义映射或将值应用于不会被映射的其他属性,我之所以不能集中进行此自定义映射是因为上下文相关,因此变量/属性将不可用。

我可以在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/

10-12 21:30