你如何处理IoC和DI的"深层"依赖?

jpa*_*ram 9 c# dependency-injection ioc-container unity-container

我是IoC的新手,我正在玩Unity.假设你有'n'项目的解决方案,你想使用Unity来注册和解决依赖关系.比方说,你的作文根是在项目一个.假设您在解决方案中有以下项目.

A B C D

让我们说a取决于b中的某些东西,b取决于cc中的某些东西取决于d中的某些东西

我已经看到你如何使用构造函数注入来解决a => b依赖关系但我仍然坚持如何解决bc 依赖性而无需访问在项目a中配置和创建的容器.

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

Jef*_*nal 8

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

例如,您通常在创建之前创建B(提供其依赖项C)的实例A.如果你" 手工 " 做到了,它看起来像这样:

C c = new C();
B b = new B(c);
A a = new A(b);
Run Code Online (Sandbox Code Playgroud)

只要您注册所有适当的类型,您的依赖注入框架将为您解决它们.

有关该主题的精彩文章,请参阅MiškoHevery的" 依赖注入神话:参考传递".