2016-09-30 63 views
1

我有一個問題。我有通用解決方案中的Unity DI容器,庫項目和WCF項目的WPF項目。在WCF庫中是從數據庫讀取的服務。 UserManager在構造函數中設置,但是這有一個錯誤。多個項目中的DI Unity - 最佳實踐

我的問題是必須統一容器在解決方案中的每個項目或我可以配置一個統一容器,以便它在整個解決方案中找到依賴關係?但

var container = new UnityContainer(); 
container.RegisterTypes(
    AllClasses.FromLoadedAssemblies(), 
    WithMappings.FromMatchingInterface, 
    WithName.Default); 

它不能解決在WCF應用程序依賴關係:

我的容器配置如下。

+0

您只需要一個容器。 –

+0

謝謝。整個解決方案只有一個容器?我的容器配置如下: var container = _container ?? (_container = new UnityContainer()); container.RegisterTypes(AllClasses.FromLoadedAssemblies(),WithMappings.FromMatchingInterface,WithName.Default); 但不要將依賴項注入到WCF應用程序中。 – bluray

+1

如果WCF項目位於遠程服務器上,並且WPF應用程序位於客戶端上,則每邊都需要一個容器。 –

回答

0

必須統一容器在解決方案中的每個項目或我可以配置一個統一容器,以便它找到整個解決方案的依賴關係?

都沒有。通常,每個啓動項目都會創建自己的容器,並配置其依賴關係。由於您有多個啓動項目(Web服務和桌面應用程序),因此您將在多個位置配置容器。這與Composition Root的概念有關。另請參閱Composition Root reuse瞭解更多詳情。