问题标签 [circular-dependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - Oracle 允许什么样的循环依赖?
我正在创建测试用例,我需要涵盖循环依赖项。到目前为止,我已经能够创建两个表,使得表 A 对 B 有一个 FK,而 B 对 A 有一个 FK。
对象之间存在/允许哪些其他循环依赖关系?我试图在视图之间创建循环,但 Oracle 成功拒绝了。
structuremap - 具有双向/循环依赖关系的 StructureMap 问题
我目前正在将StructureMap集成到我们的业务层中,但由于双向依赖关系而出现问题。
该层包含多个管理器,每个管理器可以相互调用方法:通信没有限制或规则。这还包括可能的循环依赖关系,如下例所示。我知道设计本身是有问题的,但目前我们只希望StructureMap能够工作,并将专注于未来的进一步重构。
每个管理器都实现了IManager
接口:
并且还有自己特定的接口:
这是两个虚拟管理器实现:
这是我目前使用的StructureMap配置。
我仍然不确定我应该如何注册经理,所以目前我正在使用手动注册。也许有人也可以帮助我。
毕竟我无法创建IManagerA
,因为StructureMap抱怨 和 之间的循环ManagerA
依赖ManagerB
。是否有一个简单而干净的解决方案来解决这个问题,但要保持当前的设计?
c# - StructureMap 中的循环依赖关系——它们可以被属性注入破坏吗?
我在结构映射中有最简单的循环依赖——A 类在其构造函数中依赖于 B 类,B 类在其构造函数中依赖于 A 类。为了打破依赖关系,我让 B 类将 A 类作为属性,而不是构造函数参数,但结构映射仍然抱怨。
我已经看到在其他 DI 框架中使用这种方法破坏了循环依赖关系——这是 Structuremap 的问题还是我做错了什么?
编辑: 我应该提到 B 类的属性是 A 类实例的数组,连接如下:
澄清一下,我希望发生以下事件序列:
- 构造一个B的实例,“b”
- 构造 A 的实例“a”,将“b”注入其构造函数
- 将 "b.ArrayOfA" 设置为 ["a"]
如果可能的话,我希望所有这一切都使用自动装配来发生......
编辑2:这是一个使用显式接线的简化示例:
验证配置会导致“使用 RequestedType 检测到双向依赖问题:IocTest2.ILoader ...”
c++ - 我可以避免 Matrix 类的迭代器中的循环依赖吗?
我们有两个班级:
和
Matrix 应该能够返回开始和结束迭代器,并且 Iterator 将保留对 Matrix 的引用以通过其接口访问元素。我们不希望 Iterator 依赖于 Matrix 的内部存储来防止耦合。我们如何解决这个循环依赖问题?
(内部Storage类与Matrix类具有相同的模板参数和与Matrix本身相同的访问过程)
wcf - 数据合同中的 WCF 循环引用
我有一个带有循环引用的 WCF 合同。对于简单的父子关系,使用 .NET 3.5SP1 或更高版本的解决方案非常简单 - DataContract 的 IsReference 属性(此页面有很好的解释)。
但是,我的关系有三个层次:祖父母 <-> 父母 <-> 孩子。“祖父母”有很多“父母”,“父母”有很多“孩子”。为了让祖父母 <-> 父母关系正常工作,我在祖父母上设置了 IsReference - 没问题。但是为了使父 <-> 子关系正常工作,“父”也需要是 IsReference。一旦我设置了它,我的服务就会失败 - 我想问题是当“祖父母”和“父母”都是 IsReference 时,序列化程序不知道该怎么做。
有什么方法可以用 IsReference 解决这个问题,还是我需要寻求不同的解决方案?
c# - 与泛型的循环依赖
我定义了以下接口:
基本上,IStateSpace
界面应该类似于棋盘,并且在棋盘的每个位置上,您都有一组可能的动作要做。这里的那些动作被称为IAction
s。我以这种方式定义了这个接口,因此我可以适应不同的实现:然后我可以定义实现 2D 矩阵、3D 矩阵、图形等的具体类。
一个IAction
, 将向上移动(如果(2, 2)
移动到(2, 1)
),向下移动等。现在,我希望每个操作都可以访问 StateSpace,以便它可以执行一些检查逻辑。这个实现正确吗?或者这是循环依赖的坏情况?如果是,如何以不同的方式完成“相同”?
谢谢
c# - 具有约束层次结构的泛型
我目前面临一个非常令人不安的问题:
就像你在这里一样,两者都IPosition
相互依赖。我该怎么办?我想不出任何其他设计可以绕过这种循环依赖,并且仍然准确地描述了我想要做的事情! IValue
IState
基本上我有一个状态空间IStateSpace
,IState
里面有状态。它们在状态空间中的位置由 给出IPosition
。然后每个状态都有一个(或多个)值IValue
。我正在简化层次结构,因为它比描述的要复杂一些。使用泛型定义此层次结构的想法是允许相同概念的不同实现(IStateSpace
将被实现为矩阵和图等)。
我能逃脱惩罚吗?您一般如何解决此类问题?在这些情况下使用哪种设计?
谢谢
c# - 在两个远程对象之间建立双向通信线路时的循环引用
我正在使用 .Net 远程处理在两个对象之间建立双向通信线路。基本结构如下:
此设置的问题是 RemoteObjectA 中的循环引用获取 StaticObjectA 获取 RemoteObjectB 获取 StaticObjectB 获取 RemoteObjectA ...
我实现了一个接口 IRemoteObjectA 和 IRemoteObjectB 并从它们各自的接口中继承了远程对象,但随后设置远程处理失败。
如果这个问题的解决方案是:“不要使用远程处理”,我可以处理。只是想确保我没有错过一个简单的解决方案。
compiler-construction - 编译循环依赖是如何工作的?
我已经用 Java 制作了这个例子,但我认为(未经测试)它适用于其他(所有?)语言。
你有 2 个文件。首先,M.java
:
其次,另一个文件(在同一目录中)XType.java
:
好的,这是一个糟糕的编程,但如果你运行javac XType
它 compiles: 编译,即使MType
因为XType
需要它。但是……MType
需要XType
……那是如何工作的?编译器如何知道发生了什么?
我想知道编译器(javac 或您知道的任何其他编译器)如何管理这种情况,而不是如何避免这种情况。
我问是因为我正在编写一个预编译器,我想管理这种情况。
c++ - 在 C++ 中解决涉及状态机的前向声明问题
我最近在中断后回到了 C++ 开发,并且对状态设计模式的实现有疑问。我正在使用香草模式,完全按照 GoF 书。
我的问题是状态机本身是基于一些用作嵌入式系统一部分的硬件 - 所以设计是固定的,不能改变。这导致两个状态之间的循环依赖(特别是),我正在尝试解决这个问题。这是简化的代码(请注意,我尝试像往常一样使用标头来解决此问题,但仍然存在问题 - 我在此代码片段中省略了它们):
问题基本上是在状态模式中,状态转换是通过调用 Context 类中的 ChangeState 方法进行的,该方法调用下一个状态的构造函数。
由于循环依赖,我无法调用构造函数,因为无法预先定义“问题”状态的两个构造函数。
我看了这篇文章,模板方法似乎是理想的解决方案 - 但它不能编译,而且我对模板的了解相当有限......
我的另一个想法是尝试通过多重继承将 Helper 类引入子类状态,以查看是否可以指定基类的构造函数并引用状态子类的构造函数。但我认为那是相当雄心勃勃的......
最后,工厂方法设计模式的直接实现是解决整个问题的最佳方式吗?