gpt4 book ai didi

c# - 循环依赖解决方案

转载 作者:可可西里 更新时间:2023-11-01 08:04:37 34 4
gpt4 key购买 nike

我们当前的项目遇到了循环依赖问题。我们的业务逻辑程序集正在使用 SharedLibrary 程序集中的类和静态方法。 SharedLibrary 包含一大堆辅助函数,例如 SQL Reader 类、枚举器、全局变量、错误处理、日志记录和验证。

SharedLibrary 需要访问 Business 对象,但 Business 对象需要访问 SharedLibrary。老开发者通过复制共享库中业务对象的功能解决了这种明显的代码味道(非常反DRY)。我已经花了一天时间尝试阅读有关解决此问题的选项,但我走到了死胡同。

我对重新设计架构的想法持开放态度,但只是作为最后的手段。那么我怎样才能拥有一个可以访问业务对象的共享助手库,而业务对象仍然访问共享助手库呢?

最佳答案

您可以仅为值对象(无逻辑)和接口(interface)创建一个单独的项目

让您的共享库类实现接口(interface),并且业务库依赖于接口(interface)(我在这里听到了更多可测试和解耦的代码吗?更不用说您从共享库中删除了依赖项) .

理想情况下,您的共享库也可以拥有依赖于此额外项目的业务对象。如果业务对象过于复杂,您还可以将它们转换为接口(interface)。

您将拥有两个不依赖于彼此的项目,而只依赖于另一个只有“虚拟”对象(无逻辑)的项目:

业务 ---> 接口(interface)和值对象 <--- 共享库

现在它们解耦了 =)

关于c# - 循环依赖解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596461/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com