问题标签 [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.

0 投票
1 回答
664 浏览

c# - 视图、演示者和界面之间的依赖关系

我遇到了一个经典的循环依赖问题,但我找到的解决方案(创建第三个程序集)似乎不适用于我的视图呈现器模式。

我需要在我的视图程序集中引用我的演示者 我需要在我的视图程序集中引用我的界面(与演示者在同一个程序集中)

好的,所以我在视图中引用了我的演示者/界面程序集,因为它们都在同一个地方。

现在问题来了:我需要在我的演示者/接口程序集中引用我的视图,以便能够使用我的一种视图类型(非系统类型,自定义控件)在我的接口中定义属性和访问器。由于循环依赖,我不能,而且我认为即使我在第三个程序集中移动我的界面,我将始终在这个新程序集和视图之间有一张 CD(因为我的视图需要我的界面,我的界面需要我的看法)

目标是在我的界面中设置一个属性和访问器,以便能够从我的演示者访问我的视图中的控件,因此我需要一个引用才能在界面中使用我的控件类型。

不容易说清楚,所以请随时问我,

非常感谢大家。

此致。

0 投票
4 回答
171 浏览

c++ - 如何解决依赖类?

我有两个相互依赖的课程。我以前解决过这个问题,但我一生都不记得如何解决这个问题。我的简化代码是这样的:

0 投票
4 回答
1695 浏览

ms-access - 数据库设计中的循环引用——应该避免吗?

我目前正在通过 MS Access 2003 开发数据库,​​但遇到了循环引用问题。基本上,它归结为以下关系三角形(它是我的关系表的简化形式):

其中 Positions、Employees 和 Software 是表格,并"oo-------...-------oo"显示它们之间的多对多关系。

简而言之,公司中的所有员工都被分配到特定的职位(其中一些被分配到多个职位),并且有权根据他们的职位使用特定的软件。但是,也有例外,除了根据他们的职位允许他们使用的软件包之外,一些员工还被授予使用少数其他软件包的权限。

问题是,在这种数据库中允许循环关系可以吗?是否有任何不需要非规范化的解决方法?

在此先感谢,VS。

0 投票
1 回答
2545 浏览

java - 来自 Guice 的“请等到注入完成后再使用此对象”错误

我们in(Scopes.SINGLETON)在 Guice 中有两个单例对象(通过 声明),每个对象在其构造函数中使用另一个。Guice 实现这一点的方法是使用代理 - 它首先使用另一个对象的代理来初始化对象,并且只有在需要该对象时才会解析它。

从多个线程运行此代码时,我们得到以下异常:

我认为这是 Guice 中的一个错误,因为我们没有做任何不寻常的事情。我们发现的一种解决方法是提前使用 初始化单例.asEagerSingleton(),但这不是很方便,例如用于测试。

这是一个已知的问题?报告了Google Guice 的问题,通过独立测试重现。

还有其他建议/解决方法吗?

0 投票
2 回答
7228 浏览

javascript - 在具有循环依赖关系的大对象上调用 JSON.stringify 时出现“递归过多”错误

我有一个包含循环引用的对象,我想看看它的 JSON 表示。例如,如果我构建这个对象:

并尝试打电话

我收到错误“递归过多”,这并不奇怪。“子”对象具有对其“父”的引用,而父对象具有对其子的引用。JSON 表示不必完全准确,因为我只是将它用于调试,而不是用于将数据发送到服务器或将对象序列化为文件或类似的东西。有没有办法告诉 JSON.stringify 忽略某些属性(在这种情况下parent是子对象的属性),这样我会得到:

我能想到的最接近的方法是使用getChild()andgetParent()方法而不仅仅是成员,因为 JSON.stringify 会忽略任何作为函数的属性,但如果我不必这样做,我宁愿不这样做。

0 投票
3 回答
3134 浏览

c# - 循环类引用问题

我正在开发一个 C# 应用程序,并且有一个 Employee 类和一个 Organization 类。

Employee 对象有一个 Organization 作为内部成员,Organization 对象有一个 Employee 成员来指示 Org 领导。

这种设置是否存在任何可能导致无限循环实例化的问题?

编辑:

我刚刚尝试运行代码,似乎有问题。员工对象实例化组织对象,组织对象尝试实例化员工对象。他们都连接到数据库以填写详细信息

这种情况一直在发生,直到我的 SQL 服务器连接不足。有什么替代我正在做的事情吗?

0 投票
2 回答
701 浏览

dependency-injection - 依赖解决作为一个单独的项目..如何?

我正在使用 asp.net mvc 创建一个新应用程序,我正在使用 munq IOC 容器作为我的依赖注入..问题是我想创建一个用于依赖解析的新项目,我可以在其中注册 mvc 项目的所有控制器和基础设施项目的存储库..我必须在我的 mvc 应用程序中添加 Dependency Resolution 项目作为参考作为起点......但问题是为了在这个单独的应用程序中注册控制器,我需要参考mvc 在依赖解决项目本身中......但是这样的事情是不可能的,因为这会导致循环引用..

那么如何解决这个问题呢?或者管理依赖解决方案的最佳方法是什么?我不想最终在 Global.asax 中注册所有内容

0 投票
1 回答
749 浏览

delphi - Delphi:如何将类移出单元;避免循环引用

问题:我想将两个类拆分到自己的文件中,同时避免循环引用。

我有一个包含一些类(以及一些枚举和常量)的单元。任何人都会认出Click and Clack 的 Tappet 兄弟

现在显然我的两个类TClick并且TClick相当复杂。为了便于管理,我想在不破坏任何现有外部代码TClick的情况下拆分并分配TClack给他们自己的单元。

我的第一次破解是:

完美,我有所有相同的课程,Cartalk.pas现在我只需要写:Cartalk_Click.pasCartalk_Clack.pas

当然,问题在于,TTappetBrother并且TSolution没有在本单元中声明。因此,我们在 中添加了对他们居住地的引用uses,看着它失败,并触及我问题的核心:

现在Cartalk和之间有一个循环引用Cartalk_Click

注意:当然,我没有 Cartalk 装置,还有 Click and Clack the tapper 兄弟——这只是一个例子。实际上,我的单​​元中有 3 个类、20 个枚举和 293 个常量。

0 投票
1 回答
674 浏览

c++ - c++如何处理循环依赖?

通常,如果我的#include 链变得循环,我通过用前向声明替换其中一个#include 来解决它,然后将所有依赖于这种类型的函数实现移动到cpp 文件中,我在其中#include 头文件。

但是 - 在某些情况下,将函数实现放入 cpp 文件是不好的 - 特别是在处理模板或内联函数时。

因此 - 是否有其他方法来处理循环#include 链而不是使用前向声明?

谢谢!

0 投票
4 回答
4297 浏览

java - OO设计和循环依赖

在设计我的课程时,我目前正在努力解决循环依赖问题。

自从我阅读了贫血域模型(我一直在做的事情)以来,我一直在努力摆脱创建只是“getter 和 setter”的域对象,并回到我的 OO 根源。

但是,下面的问题是我经常遇到的问题,我不确定应该如何解决。

假设我们有一个Team类,它有很多Players。这是什么运动并不重要:) 球队可以添加和删除球员,就像球员可以离开球队并加入另一个球队一样。

所以我们有一个团队,其中有一个球员名单:

然后我们有 Player,它引用了 Team:

可以假设这两种方法(移除和离开)都具有特定于域的逻辑,每当团队移除一名球员并且一名球员离开球队时,该逻辑都需要运行。因此,我的第一个想法是,当球队踢球员时,removePlayer(...) 也应该调用 player.leaveTeam() 方法...

但是如果Player正在推动离开怎么办 - leaveTeam() 方法是否应该调用 team.removePlayer(this)?并非没有创建无限循环!

过去,我只是让这些对象“哑” POJO,并让服务层完成这项工作。但是即使现在我仍然存在这个问题:为了避免循环依赖,服务层仍然将它们链接在一起 - 即

我是否过于复杂了?也许我错过了一些明显的设计缺陷。任何反馈将不胜感激。


感谢大家的回复。我接受Grodriguez的解决方案,因为它是最明显的(不敢相信我没有想到)并且易于实施。然而,DecaniBass确实提出了一个很好的观点。在我所描述的情况下,球员有可能离开球队(并注意他是否在球队中)以及推动球队撤离的球队。但我同意你的观点,我不喜欢这个过程有两个“入口点”。再次感谢。