2011-07-07 34 views
4

比方說,我有一個稱爲IHash的服務合約調用的哈希組件。我有一個需要使用哈希的組件DLL。我們正在聯合創建一個鬆散耦合的系統。應該在哪裏創建Unity容器並引用解決?

我應該創建Unity容器並解析組件DLL本身中的引用嗎?

或者我應該在組件DLL構造函數中傳遞一個IHash引用,並讓組件DLL的調用者處理Unity容器並解析IHash。

public myComponentDLL(IHash Hasher) { } 

看來,如果我創建容器並在組件DLL中解析它,Unity不會購買太多。在構造函數中傳遞它我看到了更大的好處。

除上述兩種方法外,還有更好的方法嗎?這是一個很好的做法嗎?

+0

請不要在發佈問題後的一個小時內標記答案。我在這個話題上有很多話要說,但是看到已經接受的答案並沒有激勵我寫另一個答案 - 畢竟,顯然你已經有了答案,或者至少有一些能夠滿足你的答案。 – Sander

+0

@桑德爾我沒有任何標記,正如我所指出的那樣。 –

回答

4

將單位傳遞給組件並不是一個好習慣,你不知道它的構造函數的依賴關係,因爲它只需要IUnityContainer,上帝知道在構造函數中有多少解析。

最佳實踐是通過構造函數傳遞接口(如您所做的那樣),並使用組件接口統一解析組件。雖然解決你的組件團結選擇IHash並注入它。

+0

將此標記爲答案,但如果您還有其他要提供的內容,其他人可以隨時回答。謝謝。 –

+0

你最好不要接受一段時間,否則你的問題就不會被人注意。 – anivas

+0

對不起,我對此很新穎。第一個問題問。我沒有標記。 –

相關問題