我有2个项目。
Project#2 引用了 Project#1
现在我需要在 Project#1 中引用 Project#2,但是 vs.net 抱怨循环依赖。
有没有办法解决这个问题?
我有2个项目。
Project#2 引用了 Project#1
现在我需要在 Project#1 中引用 Project#2,但是 vs.net 抱怨循环依赖。
有没有办法解决这个问题?
绝对不。循环依赖是糟糕设计的标志。我并不是要严厉。有一些方法可以解决这个问题。
1)您可以将通用代码重构到另一个项目,例如 Project#0
2)您可以修复您的设计,这可能是要走的路。
鲍勃叔叔有一篇关于包装原则的好文章,其中包括非循环依赖原则。 http://www.objectmentor.com/resources/articles/granularity.pdf。阅读本文以了解为什么循环依赖是一件坏事。
重构您的项目以将公共元素取出到项目#1 和项目#2 都引用的“项目#0”中。
将两者合二为一或重新设计。
这表明您的设计存在问题。如果确实需要两个或多个类型相互了解,那么它们应该存在于同一个程序集中。
不。正确地构建您的项目。尝试使用某种基于抽象的排序——从低级到高级。
循环依赖意味着这些不再是两个独立的项目(因为不可能只构建其中一个)。
您需要重构以使您只有单向依赖项,或者您应该将它们合并到一个项目中。
循环引用可以如上一个问题中所见,但您不应该这样做,因为每个人都已经在此处说明了原因。
我真的不是要成为一个聪明人,但更好的程序设计就是答案。
每个人都会告诉你这是一个糟糕的设计,不要这样做等等。然而,有时说起来容易做起来难,将实现转移到单独的公共代码中是不可取的。对于这种情况,不要直接调用另一个包,而是从一个包发出一个事件并在另一个包中处理它。这样,您就不需要使另一个组件成为第一个组件中的依赖项。
如果您仍希望将实现保留在单独的包中,另一种方法是从接口派生逻辑类并将它们定义在单独的包中。如果您有办法实例化实现,例如通过依赖注入或其他方式,则此方法有效。
这似乎是一个设计缺陷,没有别的。重新设计是解决方案。
我认为这不是一个好的解决方案,但我们仍然可以按照以下步骤操作