依赖注入与程序集依赖关系

Spo*_*ook 6 c# dependency-injection unity-container

说,我有以下项目结构:

Application <-> BusinessLogic <-> DataAccessLayer
Run Code Online (Sandbox Code Playgroud)

我已准备好使用穷人依赖注入的所有类型,现在我想用Unity引入真正的类型.但是我在努力放置依赖容器及其配置的位置(我想我会从代码中配置它).

  • DataAccessLayer需要注册Context(EF)
  • BusinessLogic需要注册数据存储库(使用上下文)
  • 应用程序需要注册服务(使用存储库)

目前,使用容器实际实例化类的唯一程序集将是Application.所以我有以下依赖关系图:

  • DI使用DataAccessLayer
  • DI使用BusinessLogic
  • DI使用Application
  • 应用程序使用DI

我在这里有循环引用,所以将DI放在Application中似乎是合法的.但是我必须引用DataAccessLayer,这是我不想创建的依赖项.我该如何解决这个问题?

usr*_*usr 1

  1. 在 DL 层中创建一个方法来注册其组件。
  2. 在BL层做同样的事情,但也调用DL方法。
  3. 在A层做同样的事情但也调用BL方法。

这样,相对较高的层就可以与较低的层屏蔽,并且所有内容都可以正确注册。对于A层来说,DL甚至存在是一个实现细节。它只知道 BL 层。