我正在使用Unity框架在我的应用程序(ASP.Net MVC)中实现依赖注入.
有时我想避免的服务之间存在一些循环依赖关系.
所以我正在寻找解决方案:)
我的情况
好吧,让我们想象3服务ServiceSally,ServiceJoe,ServiceJudy
ServiceSally依赖于ServiceJoe
ServiceJoe依赖于ServiceJudy
ServiceJudy依赖于ServiceSally(<<那有点奇怪不是吗?) 因此,如果您实例ServiceSally,她将需要注入ServiceJoe,而ServiceJoe将需要ServiceJudy和…. BANG!… ServiceJudy将需要ServiceSally开始无休止的循环 – 非常悲伤的三角形 – . 我怎么能解决这个循环爱三角形的情况? :/ 更新: 我的第一个解决方案:LazyJoe 如何在服务引用周围使用包装器来延迟注入,直到它们被使用为止? 你怎么看?
解决方法
>创建ServiceSally
>创建ServiceJoe
>创建一个ServiceJudy
>初始化ServiceJudy
>将ServiceJudy注入ServiceJoe
>初始化ServiceJoe
>将ServiceJoe注入ServiceSally
>初始化ServiceSally
>将ServiceSally注入ServiceJudy
>告诉ServiceJoe,ServiceJudy和ServiceSally他们已经准备好了
这就是为什么初始化构造不适用于此方法的原因(因为初始化是延迟的).这是处理它的唯一方法.好吧也许你也可以使用某种代理(临时或永久).
一般来说,至少根据我的经验,循环依赖性是设计的症状,这种设计要么以某种方式存在缺陷,要么需要简化.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。