我是IoC的新手,我正在玩Unity。假设你有'n'项目的解决方案,你想使用Unity来注册和解决依赖关系。假设你的组合根在项目 a 中。假设您在解决方案中有以下项目。
一 b C d
让我们说 a 取决于 b 中的内容, b 取决于 c 和中的内容c 取决于 d
中的内容我已经看到如何使用构造函数注入来解析 a =&gt; b 依赖但我仍然坚持如何解决 b 对 c 的依赖关系,而无需访问在项目 a <中配置和创建的容器/ em>的
解决嵌套依赖项的方法是什么? 是否存在解决深度依赖关系的讨论/博客/示例?
答案 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。”