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

时间:2010-11-11 16:08:48

标签: c# dependency-injection unity-container ioc-container

我是IoC的新手,我正在玩Unity。假设你有'n'项目的解决方案,你想使用Unity来注册和解决依赖关系。假设你的组合根在项目 a 中。假设您在解决方案中有以下项目。

一 b C d

让我们说 a 取决于 b 中的内容, b 取决于 c 中的内容c 取决于 d

中的内容

我已经看到如何使用构造函数注入来解析 a =&gt; b 依赖但我仍然坚持如何解决 b c 的依赖关系,而无需访问在项目 a <中配置和创建的容器/ em>的

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

1 个答案:

答案 0 :(得分:8)

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

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

C c = new C();
B b = new B(c);
A a = new A(b);

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

有关此主题的精彩文章,请参阅MiškoHevery的“Dependency Injection Myth: Reference Passing。”