我有一个解决方案,在该解决方案上,我有(多个)2个项目。
第一个项目具有对第二个项目的项目引用。第二个项目没有对第一个项目的引用。
好吧,在第一个项目中,我定义了一个可继承的类类型,我希望第二个项目中的某些类可以从该类中继承。
显然,如果要继承第一个项目中定义的类型,则在第二个项目中,我需要向第一个项目添加项目引用,以便能够看到类型并继续。
问题是,当我尝试添加项目引用时,出现以下错误消息:
有人可以用其他简单的词(如果在错误中暗含代码的情况下,也可以通过代码示例)向我解释什么是循环依赖?最重要的事情是:我该怎么做才能解决它?(在回答之前,请先阅读我研究的最后一句话)。
这是我第一次听到“循环依赖”一词;我已经从MSDN阅读了这篇文章,但我什么都不懂。
反正我见过像圆形dependencys的许多问题这个,从我在这个问题见过看来,循环依赖意味着两个项目不能在它们之间在同一时间基准,只是这两个项目中的一个可以与其他参考; 并且所有回答该问题的人都说过诸如“重新设计才是解决方案”或“循环依赖不是良好实践”之类的事情,但是,就我而言,重新设计将意味着在两个项目中都定义相同的类型,我认为这也不是一个好习惯,当然,构建一个额外的程序集/项目只是为了存储一个类型以在两个项目中引用该程序集……这是我认为的最糟糕的主意。
什么是礼节?
为了了解什么是循环性,最好了解什么是循环性及其对编译器的意义。
假设您有一个项目,并且在一个类中,您定义了以下内容:
Public Class MyClass
'Some code here
Private MyString As String
'Some code there
End Class
编译项目时,编译器会运行String类,该类在称为System的DLL文件中定义。然后,它将将该DLL链接到您的项目,因此在运行时,当在字符串上定义或执行操作时,将加载System.dll来执行这些操作。
现在,假设您在课堂上进一步定义了以下定义
'Some code here
Private MyObjet as CustomClass1
'Some code there
假设CustomClass1
是在您的另一个项目Project2.DLL中定义的:
Public Class CustomClass1
'Your customr class code
End Class
因此,在编译第一个项目时,编译器将运行到CustomClass1
定义中,它知道它位于Project2.dll中,因此将在之前编译Project2,以便能够在第一个项目中添加该引用。
那就是礼节,它是分层的,必须有一个起点。甚至String类都依赖于其他类,最后,它们都依赖字节或位来完成这项工作,因为那是计算机只能1
和and一起玩的事情0
。
所以圆形部分
因此,如果您在Project2中有一个链接到第一个项目的引用(字段定义等),会发生什么?
CustomClass1
CustomClass1
因此在某些时候,编译器会显示错误,表示无法编译,因为它无法理解您要执行的操作...
是的,电脑真傻。
怎么解决呢?
解决这类问题有时很困难,但是基本思想是建立一个层次结构,将基类(不需要依赖关系的那些基类)放在一起,然后在它们之上建立。
将相互依赖的所有类放在一起,它们构成了您在应用程序中尝试执行的操作的一层。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句