2

我已经为许多类设置了映射,但是在某些情况下,我会想要应用一些自定义映射或将值应用于不会映射的其他属性,我不能集中执行此自定义映射的原因是因为它是上下文相关,因此变量/属性将不可用。

是否有我可以在 AutoMapper 中绑定的事件,以便在调用 Mapper.Map 后填充某些属性?

4

1 回答 1

3

您可以创建如下映射:

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 执行相同的操作。

于 2012-06-24T10:05:06.737 回答