依赖注入(DI)是否仅传递依赖问题?

时间:2019-04-26 00:03:20

标签: c# dependency-injection

我对完全理解DI有问题。假设

  • 我有一个深度嵌套的应用程序(10层)

  • 每个层都是针对接口设计的。 例如:class Layer3:InterfaceLayer3 {…。}

  • 每层都依赖于通过构造函数注入注入的下一层。 例如:Layer3(InterfaceLayer4 instanceLayer4){…。}

  • 每个层都有自己的程序集。所有接口都以各自的程序集(* .dll)分隔。

如果我查看应用程序的类图,它看起来很棒:最小的依赖!!!

但是,我必须在某个地方创建要注入的对象。我是通过组合根目录的工厂来实现的,接近“ void main(void)”。这些工厂位于“ Factories.dll”中。

如果再次查看类图,会发现我的“ Factories.dll”创建了一个依赖关系地狱:它取决于所有层。

  

我的问题:    看来DI解决了我的应用程序代码的依赖性问题,但我现在将问题转移到了另一个地方:“ Factories.dll”。这个说法有什么问题?

1 个答案:

答案 0 :(得分:1)

您不必担心Composition Root(应用程序入口点)引用了许多“应用程序代码”项(接口和实现程序集),因为它已经实现了主要目标-库/框架取决于只是需要抽象

因此,可以轻松地配置,测试,重用,维护,打包打包交付库/框架

如果您担心“合成根”中配置的混乱/复杂性,则可以使用与以下内容相关的 Module (由许多IoC容器提供,例如Autofac Module)配置项。