首页 / C# / c# – 循环依赖树,是否合理
c# – 循环依赖树,是否合理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 循环依赖树,是否合理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1416字,纯文字阅读大概需要3分钟。
内容图文
![c# – 循环依赖树,是否合理](/upload/InfoBanner/zyjiaocheng/797/d96dd9906078499b824b377f15d7b52f.jpg)
我想出了一些解决方案,我的IoC / DI容器(Castle Windsor)声称有一个循环依赖树.这是真的.但我不确定这个循环是否有害.
这或多或少是依赖树:
> WebAPI控制器取决于……
> ……服务A取决于……
> ……工作单位取决于……
> ……存储库取决于……
> …域事件管理器(1)依赖于很多…
> …域事件处理程序,一个取决于……
> …服务A(2)
(1)域事件管理器是一个通用类,旨在协调由相同或其他域监听的具体域事件并执行副操作.
(2)这是依赖循环发生的地方
我的域事件管理和处理是在考虑面向方面的编程时实现的,因此,虽然它是依赖树的一部分,但给定的域事件处理程序可能依赖于或不依赖于同一依赖树中的服务:我认为域事件处理程序,如额外的顶级依赖项.但最坏的情况已经发生了.
我的观点是,由于域事件是一个交叉概念,给定的处理程序应该能够注入任何服务,甚至是已经存在于给定操作流的依赖树中的某个服务.
目前,我已经在受影响的域事件处理程序中使用属性注入修复了该问题,但无论如何可能有替代整个解决方法.
解决方法:
从您的设计的抽象定义很难确切,但我经历了大多数情况下的循环依赖是Single Responsibility Principle违规的结果.
问问自己:通过将服务A分解为多个较小的独立组件可以解决问题,其中:
> WebAPI控制器依赖于新服务Y,它再次依赖于现在拆分服务A的一个或多个组件.
>其中一个域事件处理程序依赖于前一个服务A的一个隔离组件.
如果这个问题的答案是:是的,服务A很可能太大,并承担了太多的责任.
这些问题通常与Interface Segregation Principle密切相关,因为最终会使用更集中的API来构建更小的组件.这些组件通常只有一种公共方法.
第Dependency Injection in .NET, second edition页的第6章详细介绍了依赖循环,它们是由SRP违规引起的.
内容总结
以上是互联网集市为您收集整理的c# – 循环依赖树,是否合理全部内容,希望文章能够帮你解决c# – 循环依赖树,是否合理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。