2012-06-23 198 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做同樣的事情。