dependency injection与程序集依赖关系
说,我有以下项目结构:
Application BusinessLogic DataAccessLayer
我已准备好使用穷人dependency injection的所有类型,现在我想用Unity引入真实的类型。 但是我在努力放置依赖容器及其配置的位置(我想我会从代码中配置它)。
目前,使用容器实际实例化类的唯一程序集将是Application。 所以我有以下依赖关系图:
我在这里有循环引用,所以将DI放在Application中似乎是合法的。 但是我必须引用DataAccessLayer ,这是我不想创建的依赖项。 我该如何解决这个问题?
如果您想使用DI容器,那么您应该只在Application本身中使用它,而不是在其他类库中使用它(例如BusinessLogic和DataAccessLayer)。 组成对象图的应用程序中的位置称为组合根 。
引用该文章:
只有应用程序应具有组合根。 图书馆和框架不应该。
既然你已经准备好了你的课程来帮助穷人DI(现在称为Pure DI ),你应该没问题。 DI现已在您的库中启用(请注意DI和DI容器是不同的东西)。
您的应用程序现在可以从所有类库中连接所有类,即使这意味着您的应用程序项目将需要引用所有其他类库。
在我看来 ,如果没有DI容器(即使在应用程序层),你会更好,看看这篇文章的原因。
- 在DL层中创建一个注册其组件的方法。
- 在BL层执行相同操作但也调用DL方法。
- 在A层执行相同但也调用BL方法。
这样,相对较高的层与较低层隔离,并且一切都被正确记录。 对于A层,它是DL甚至存在的实现细节。 它只知道BL层。
上述就是C#学习教程:dependency injection与程序集依赖关系分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005122.html