2016-09-30 44 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了解更多详情。