多个项目中的 DI Unity - 最佳实践

DI Unity in multiple projects - best practises

我有一个问题。我在通用解决方案中有带有 Unity DI 容器、库项目和 WCF 项目的 WPF 项目。在 WCF 库中是从数据库读取的服务。 UserManager 在构造函数中设置,但这有一个错误。

我的问题是 unity 容器必须在解决方案的每个项目中,或者我可以配置一个 unity 容器以便它在整个解决方案中找到依赖项?

我的容器配置如下:

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

但它不解决 WCF 应用程序中的依赖关系。

must unity container be in each project in solution or I can configure one unity container so that it finds dependencies in the whole solution?

都没有。您通常会让每个启动项目创建自己的容器,并配置其依赖项。由于您有多个启动项目(Web 服务和桌面应用程序),因此您将在多个位置配置容器。这与Composition Root. Also look at Composition Root reuse的概念有关,更详细。