使用依赖注入解决循环依赖关系

11 .net architecture dependency-injection circular-dependency

我在各种网站上看过几篇文章,提出通过使用依赖注入解决.NET程序集之间的循环依赖关系.这可能会解决构建错误,但它并没有真正解决循环依赖,是吗?对我来说,架构中似乎仍然存在逻辑错误.我是疯了还是其他人都同意1)这是一个不太好的DI使用,2)不是解决循环依赖问题的适当方法?

And*_* II 31

如果两个对象之间存在循环依赖关系,则意味着您需要第三个对象,这两个对象将依赖于该对象,因此它们不会相互依赖.这篇文章是您问题的确切解决方案:

http://misko.hevery.com/2008/08/01/circular-dependency-in-constructors-and-dependency-injection/

  • +1很棒的链接 - 该文章解释得非常好! (3认同)

Coh*_*hen 8

  1. 是的,你通过使用额外的抽象层来更难以检测它们.
  2. 你绝对不能解决循环依赖,而是通过添加额外的抽象层,使用后期绑定或/和松散耦合来隐藏它.

相同的答案在以下帖子中返回(我将为参考添加),这将创建一个两者都依赖的第三类.这意味着:您违反了单一责任原则.通过移动(提取)两个类依赖于一个单独的类的责任,你将删除循环依赖.

仅供参考维基百科单一责任模式

StackOverflow由他人讨论:

在StackOverflow上的答案,以及在单独的类中提取责任的示例.


Jur*_*uri 3

DI 不是为了解决循环依赖关系,而是为了促进创建良好解耦的组件,从而提高可测试性。