2011-03-11 65 views
1

在閱讀Jimmy Bogard在AutoMapper and IoC上發表的博文後,我試着用Ninject作爲IoC來實現類似的東西。所以我知道這是一個IoC將提供一個單身實例IConfiguration你用它來定義對象映射。Automapper和IoC

Dim config as IConfiguration = Kernel.Get(Of IConfiguration) 
Config.CreateMap(Of Source, Destination) 

所以後來我寫了一個測試,以檢查什麼是映射靜態類做不同的。在以下測試中,我比較了IConfigurationIMappingEngine的兩個不同實例,並通過了測試。

因此,我試圖找出當靜態類執行相同的事情時使用IoC與AutoMapper的目的是什麼,即每次都提供IConfiguration的單例實例。

<TestMethod()> 
    Public Sub Test() 
     Dim c1 As IConfiguration = Mapper.Configuration 
     Dim c2 As IConfiguration = Mapper.Configuration 

     Dim e1 As IMappingEngine = Mapper.Engine 
     Dim e2 As IMappingEngine = Mapper.Engine 

     Assert.AreSame(c1, c2) 
     Assert.AreSame(e1, e2) 
    End Sub 

回答

0

如果您擁有一個包含映射被配置爲一個單獨的組件,就可以確保配置爲短暫的一個組成部分獲得通過注入映射組件滿足它們的依賴關係(映射)。

您不必通過任何其他方式初始化其他地方的映射。

如果你有瞬態組件,你可以肯定映射初始化代碼只運行一次,因爲該組件被配置爲單例然後被注入。

我沒有這樣做過,我自己(我的組件大多是單身人士),但它聽起來像一個不錯的主意。