2012-06-23 197 views
2

我为许多类设置了映射,但是在某些场景中,我想要应用一些自定义映射或将值应用于其他不会映射的属性,自定义映射集中是因为它是上下文敏感的,所以变量/属性将不可用。映射项目时AutoMapper中的事件

是否有一个事件可以绑定到AutoMapper内,以便在Mapper.Map被调用后可以填充某些属性?

回答

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做同样的事情。