C# 您如何处理';深';与IoC和DI的依赖关系?

C# 您如何处理';深';与IoC和DI的依赖关系?,c#,dependency-injection,unity-container,ioc-container,C#,Dependency Injection,Unity Container,Ioc Container,我是国际奥委会的新手,我正在团结一致地比赛。假设您有一个包含“n”个项目的解决方案,并且希望使用Unity来注册和解决依赖关系。假设您的合成根在项目a中。假设您在解决方案中有以下项目 a B C d 假设a依赖于b中的某个东西,b依赖于c中的某个东西,c依赖于d中的某个东西 我已经看到了如何使用构造函数注入来解析a=>b依赖关系,但是我一直在思考如何在不访问在项目a中配置和创建的容器的情况下解析b对c的依赖关系 解决嵌套依赖关系的方法是什么? 是否有讨论/博客/示例来解决深度依赖关系的解决方案?

我是国际奥委会的新手,我正在团结一致地比赛。假设您有一个包含“n”个项目的解决方案,并且希望使用Unity来注册和解决依赖关系。假设您的合成根在项目a中。假设您在解决方案中有以下项目

a B C d

假设a依赖于b中的某个东西,b依赖于c中的某个东西,c依赖于d中的某个东西

我已经看到了如何使用构造函数注入来解析a=>b依赖关系,但是我一直在思考如何在不访问在项目a中配置和创建的容器的情况下解析b对c的依赖关系

解决嵌套依赖关系的方法是什么?
是否有讨论/博客/示例来解决深度依赖关系的解决方案?

您的合成根目录应该创建并交付所有依赖关系,包括嵌套的依赖关系,因此它需要引用所有相关程序集(除非您使用反射提供它们)

例如,通常在创建
A
之前创建
B
的实例(提供其依赖项,
C
)。如果您执行了“”,它将如下所示:

C c = new C();
B b = new B(c);
A a = new A(b);
只要注册所有适当的类型,依赖项注入框架就会为您解决这些问题


有关此主题的一篇优秀文章,请参阅Miško Hevery的“

基于链接的可能重复的可能重复,如果我在b中并且需要c的实例,我会要求容器解析该实例吗?ie:C=container.resolve();如果我在C中,我是否遵循相同的模式…这将要求所有项目都可以访问容器…这是一种理想的方法吗?不,只有最高级别的项目(应用程序或网站)才应该引用容器。下层甚至不需要知道具体的依赖关系。换句话说,在C中,您不需要解析来自D的类的具体实例。这有意义吗?感谢您提供本文的链接。它几乎描述了我一直在挣扎的概念。不客气,当我读到那篇文章时,很多东西都为我点击了,我很高兴听到它有帮助。