2013-06-27 75 views
1

我正在使用依賴注入和Unity容器的MVC4應用程序。我能夠通過在Web項目中實現IDependencyResolver類來解決依賴關係。有沒有類似的方式來解決啓動時支持類庫的依賴關係?如何解決類庫中的依賴問題?

回答

2

有沒有類似的方式來解決啓動時支持類庫的依賴關係?

直接調用放入容器或一個門面(如DependencyResolver)是被稱爲Service Locator pattern和是被認爲是an anti-pattern大多數專家的圖案。

因此,不要在類庫項目中的類中調用服務定位器,而應使用dependency injection pattern,在該構造函數中注入類需要的所有依賴項。

+0

在將依賴項注入構造函數之前,我需要註冊依賴關係。這是通過在初始化期間實現IDependencyResolver接口在MVC中處理的。我想在裝配啓動時用業務邏輯註冊支持類庫的依賴關係。我正在尋找一個接口或上下文來註冊類庫項目啓動時的依賴關係。 – AnxiousdeV

+0

這些組件在其他程序集中定義並不重要。他們都應該註冊在你的應用程序的啓動路徑中(在MVC中這是'Application_Start'事件)。這個獨特的地方叫做[Composition Root](http://blog.ploeh.dk/2011/07/28/CompositionRoot/)。 – Steven

+0

好的,這似乎有道理,但不會導致MVC項目依賴支持類庫項目?我有一個3層應用程序,UI(MVC項目)業務(類庫)和數據(類庫)。我想從Data項目注入依賴項到Business項目中,並從Business項目中注入到UI項目中。如果我將所有項目的依賴項註冊到UI項目中,我需要爲Business和Data項目添加對UI項目的引用,從而創建依賴項。 – AnxiousdeV