gfo*_*ley 13 .net c# architecture design-patterns circular-dependency
我们当前的项目遇到了循环依赖问题.我们的业务逻辑程序集使用SharedLibrary程序集中的类和静态方法.SharedLibrary包含一大堆辅助函数,例如SQL Reader类,枚举器,全局变量,错误处理,日志记录和验证.
SharedLibrary需要访问Business对象,但Business对象需要访问SharedLibrary.旧开发人员通过复制共享库中的业务对象的功能(非常反DRY)来解决这种明显的代码味道.我花了一天时间试图阅读我解决这个问题的选择,但我已经走到了尽头.
我对架构重新设计的想法持开放态度,但这只是最后的手段.那么如何才能拥有可以访问业务对象的共享助手库,业务对象仍然可以访问共享助手库?
Sam*_*ijo 21
您可以仅为值对象(无逻辑)和接口创建单独的项目.
让您的共享库类实现接口,并且Business库依赖于接口(我在这里听到更多可测试和解耦的代码吗?更不用说从共享库中删除依赖关系了).
理想情况下,您可以拥有共享库依赖于此额外项目的业务对象.如果业务对象太复杂,您还可以将它们转换为接口.
您将使两个项目彼此不依赖,但仅在另一个仅具有"虚拟"对象的项目中(无逻辑):
业务--->接口和值对象<---共享库
现在这些是解耦的=)