循环依赖

mrb*_*lah 30 c# dependencies visual-studio package-design

我有2个项目.

项目#2引用了项目#1

现在我需要在Project#1中引用Project#2,但是vs.net抱怨循环依赖.

有没有办法解决这个问题?

Cra*_*son 67

绝对不.循环依赖性表明设计不良.我并不是说要严厉.有一些方法可以解决这个问题.

1)你可以将公共代码重构到另一个项目,比如Project#0

2)您可以修复您的设计,这可能是最佳选择.

鲍勃叔叔有一篇关于包装原则的文章很好,其中包括非循环依赖原理. http://www.objectmentor.com/resources/articles/granularity.pdf.阅读本文以了解为什么循环依赖是一件坏事.

  • 常见的解决方法是依赖接口等抽象而不是具体实例,并将这些抽象移至另一个程序集。但是,实际上,请考虑一下您的项目结构以及什么真正属于哪里。 (2认同)

cod*_*zen 12

重构您的项目以将公共元素带入项目#1和项目#2引用的"项目#0".


Dav*_*d M 6

将两者合并为一个或重新设计.


Ada*_*lph 6

这表明您的设计存在问题.如果真正需要两种或多种类型相互识别,那么它们应该存在于同一个程序集中.

  • 如果需要使用不同的语言? (2认同)

R S*_*hko 5

循环依赖意味着它们不再是两个独立的项目(因为不可能只构建其中之一)。

您需要进行重构,以便只有单向依赖关系,或者应该将它们合并到一个项目中。