什么是循环依赖关系,我该如何解决?

ElektroStudios

设想


我有一个解决方案,在该解决方案上,我有(多个)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
  • 然后尝试编译Project2,因为在那里定义了CustomClass1
  • 然后运行到您的第一个项目中定义的类
  • 它尝试编译您的第一个项目以将其链接到第二个项目
  • 然后它运行到 CustomClass1
  • 然后它尝试编译Project2
  • 我想你明白了...

因此在某些时候,编译器会显示错误,表示无法编译,因为它无法理解您要执行的操作...

是的,电脑真傻。

怎么解决呢?

解决这类问题有时很困难,但是基本思想是建立一个层次结构,将基类(不需要依赖关系的那些基类)放在一起,然后在它们之上建立。

将相互依赖的所有类放在一起,它们构成了您在应用程序中尝试执行的操作的一层。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决共享库依赖关系?

来自分类Dev

为什么9 + 1 = *,我该如何解决?

来自分类Dev

我该如何解决`以下软件包具有未满足的依赖关系`

来自分类Dev

如何解决这种循环依赖关系?

来自分类Dev

什么是循环依赖关系,我该如何解决?

来自分类Dev

什么是NoSuchBeanDefinitionException,我该如何解决?

来自分类Dev

什么是Ubuntu One冲突,我该如何解决?

来自分类Dev

堆栈如何解决依赖关系?

来自分类Dev

如何解决或修复Django循环模型字段依赖关系?

来自分类Dev

为什么我不能下载swiglpk,该如何解决?

来自分类Dev

什么是Ubuntu One冲突,我该如何解决?

来自分类Dev

rpm如何解决库依赖关系?

来自分类Dev

如何解决共享库依赖关系?

来自分类Dev

我该如何解决while循环问题?

来自分类Dev

自制软件如何解决依赖关系?

来自分类Dev

我该如何解决

来自分类Dev

什么是“类型不匹配”,我该如何解决?

来自分类Dev

我该如何解决?

来自分类Dev

我该如何解决依赖关系破裂并安装Clementine的问题?

来自分类Dev

ffmpeg依赖错误告诉我什么,如何解决?

来自分类Dev

我有什么版本的Cordova,该如何解决?

来自分类Dev

我该如何解决这些残缺的依赖关系?

来自分类Dev

循环依赖-如何解决和避免

来自分类Dev

如何解决dpkg依赖关系?

来自分类Dev

NoClassDefFoundError。为什么???我该如何解决?

来自分类Dev

如何解决 Autofac 循环依赖?

来自分类Dev

如何解决这种循环依赖?

来自分类Dev

什么是 Nuget UNC 路径,我该如何解决?

来自分类Dev

什么是分段核心转储?我该如何解决?