2011-11-22 75 views
8

我有一個C#應用程序設置像這樣:定製的Autofac模塊駐留在哪個組件中?

[Assembly-ConsoleApp] --References--> [Assembly-Domain] 
              /
[Assembly-FileAccess] --References-->---------/ 

基本上,我的大部分接口和幾個具體的類中域裝配中發現,許多在FileAccess的組件中發現的具體實現。 ConsoleApp程序集使用了未彙編FileAccess程序集的Domain程序集。

我創建了一個autofac FileAccess模塊​​,用於將FileAccess實現與Domain接口連接起來,以及直接位於Domain程序集內的任何具體類。我的問題是在哪裏把這個模塊。從最佳實踐的角度來看,模塊應該位於FileAccess程序集(這將需要我添加對autofac程序集的引用/依賴關係)或者它應該放在ConsoleApp程序集中(它使用該模塊並已經有一個autofac依賴)?或者一個完全獨立的程序集只有給定的模塊是有意義的?

感謝

回答

8

的容器應該只從應用程序的Composition Root,而你的情況是指ConsoleApp裝配引用。

這可確保包含應用程序邏輯的程序集不受任何特定DI容器的依賴。

可以還實現了在一個單獨的程序模塊,並加載由該組合物根,但由於該組件(該ConsoleApp)仍然需要Autofac一個參考,沒有多少做那獲得。這取決於有關情況,但除非您創建的ISV應用程序作爲一個(幾乎)縮小包裝的軟件發送給許多不受控制的客戶,否則很難付出努力。

+0

謝謝馬克!這就是我想要走的路,但我只是想確定。我對使用容器仍然很陌生(並且對於這個問題使用**適當的**依賴注入)。 –

相關問題