场景
我有一个解决方案,其中包含(超过)两个项目。
第一个项目引用了第二个项目。第二个项目没有引用第一个项目。
在第一个项目中,我定义了一个可继承的类类型,并希望第二个项目的某些类从它继承。
问题
显然,如果我想在第二个项目中继承在第一个项目中定义的类型,我需要添加对第一个项目的项目引用才能看到该类型并继续进行操作。
问题是,当我尝试添加项目引用时,会出现以下错误消息:
问题
请有人用其他简单的词语(可能还有代码示例,如果在错误中涉及到代码)来解释什么是“循环依赖”?最重要的是:我可以做什么来解决它? (在回答之前,请阅读我的研究的最后一句话)。
研究
这是我第一次听说“循环依赖”一词。我阅读了MSDN的这篇文章,但我什么也没看懂。
无论如何,我看到了许多关于循环依赖的问题,比如这个。从那个问题中我所看到的来看,循环依赖意味着两个项目不能同时相互引用,只有其中一个项目可以引用另一个项目;如果两个项目相互引用,则会发生死循环和编译错误。
因此,在您的情况下,由于第一个项目已引用第二个项目,而且您想要在第二个项目中使用第一个项目中定义的类型,所以您不能再向第二个项目添加对第一个项目的引用。为了解决这个问题,您应该将公共的类库(例如DLL文件)从两个项目中提取出来,并将其包含为它们都可以引用的独立项目或程序集。这样,两个项目都可以引用并使用该公共类型,而不会发生循环依赖问题。
而且所有回答该问题的人都说了类似于“重新设计是解决方案”或者“循环依赖不是好的实践”,然而,在我的情况下重新设计意味着在两个项目中定义相同的类型,我认为这也不是一个好的实践。当然,建立一个额外的程序集/项目仅仅为了存储单个类型并将该程序集用于两个项目中是我认为最坏的想法。