问题标签 [cyclic-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.
c# - Ninject 循环依赖 - 已经在使用属性注入
我在使用依赖注入的项目中遇到循环依赖问题。环顾四周,似乎避免它的唯一方法,除了重组(我也做了一些),就是使用属性注入。我试过这个,它似乎没有帮助,但我不知道为什么。这是导致问题的路径。
现在,它似乎知道它正在使用属性注入,并且所有的行为和工厂都在同一个范围内(现在调用范围,但我也尝试过线程范围),以及 UserRepository。
我对这个过程的理解是它应该达到 4,并且能够实际创建对象。此时,它应该具有对 HomeController、IUserRepository 和 IInternalUserBehavior 的引用。然后它应该在 5 上工作,并将完成的 IUserRoleService 插入到 InternalUserBehavior 中。最后,它应该将先前实例化的用户存储库(因为它在同一范围内)插入到 ModelFactory 的属性中
所以我想我的问题的简短版本是:为什么属性注入不能解决我的循环依赖问题?
python - 如何正确处理 Python 中的循环模块依赖项?
试图找到一个好的和适当的模式来处理 Python 中的循环模块依赖。通常,解决方案是删除它(通过重构);但是,在这种特殊情况下,我们真的希望拥有需要循环导入的功能。
编辑:根据下面的答案,此类问题的通常攻击角度将是重构。但是,为了这个问题,假设这不是一个选项(无论出于何种原因)。
问题:
该logging
模块需要该configuration
模块的一些配置数据。但是,对于某些configuration
功能,我真的很想使用logging
模块中定义的自定义日志记录功能。显然,将logging
模块导入configuration
会引发错误。
我们能想到的可能解决方案:
不要这样做。正如我之前所说,这不是一个好的选择,除非所有其他可能性都是丑陋和糟糕的。
猴子补丁模块。这听起来还不错:在初始导入之后和实际使用它的任何功能之前
logging
动态加载模块。不过,这意味着定义全局的、每个模块的变量。configuration
依赖注入。我已经阅读并遇到了依赖注入替代方案(特别是在 Java Enterprise 领域),它们消除了一些令人头疼的问题;但是,它们可能过于复杂而无法使用和管理,这是我们想要避免的。不过,我不知道全景图在 Python 中是如何描述的。
启用此功能的好方法是什么?
非常感谢!
c++ - C++ 错误:“'class' 没有命名类型”和“无效使用不完整类型 'struct ...'”
这是一个非常重复的问题,也在 StackOverflow 中,但即使尝试不同的答案,我也无法解决我的问题。所以,我有一些课程:
主.cpp:
富.h:
酒吧.h:
显然,我有一个循环依赖。所以我得到了臭名昭著的错误'bar' does not name a type
。在这种情况下,我添加class bar;
到foo
声明并删除#include
. 当我这样做时,我得到:invalid use of incomplete type ‘struct bar'
.
我尝试了一些不同的方式,也添加class foo;
到 bar,但我总是有某种错误。在最后一种情况下,我得到:
另外,我从来没有抱怨过gru
。作为附加信息,bar
在main
我添加foo
.
有什么有用的想法吗?非常感谢 :)
class - 将 UML 类图转换为 C++ 代码(VS 2012)
我正在将 VS2012 用于我们从头开始的课程项目,我们将使用 C++ 创建这样的东西(我认为聚合部分是相反的):
https://www.dropbox.com/s/w2zh7yltbups6cm/class.png
好吧,我们在纸上写了,为每个类编写代码没有任何问题,除了我们无法测试,因为每个类都依赖于当时尚未完成的另一个类。长话短说:每个类都有自己的未经测试的代码,VS 不会检测到任何错误,根据我们以前的经验,我们知道代码是正确的,反正没有语法错误。
当我开始编译大约 500 个错误时,其中一些错误出现在“time.h”中,我认为编译器有问题,尝试切换到 C::B 并查看它是否有效,但我需要一个不同的编译器,我没有时间下载任何大文件,严重的是,2 天内的截止日期和互联网速度很糟糕。
在这里做一些研究(和谷歌搜索)我把它缩小到循环依赖,我了解到我可以在 VS 中绘制图表并获取代码文件,不幸的是它是在 C# 中完成的,而我有一个 C++ 代码(它必须是 C++ ) .
我怎样才能在 C++ 中实现这个图?哪个类应该包含哪些标题?将来如何避免这种情况?
编辑:通过删除所有依赖项并禁用预编译的头文件来解决它(不知道我是否必须这样做),然后我将每个 .h 包含在其相应的 .cpp 中,然后我在每个 .h 中包含它需要的每个头文件利用。所有这些并没有真正解决我的问题,它是声明!我对每个标题做了#ifndef myclass, #define myclass并声明了使用的类,我认为这就是所谓的“前向声明”(如果我错了,请纠正我)无论如何它终于编译了,我将开始测试。
如果您有任何意见,那么您可以添加它们。
c++ - 命名空间内的类的循环依赖问题
我有一个循环依赖问题。我有两个头文件,它们相互依赖。我遇到的问题与命名空间中的类有关。
文件 #1
文件 #2
如何在文件#2 中转发声明 sef::Sub 类?
haskell - 解决haskell数据记录中的循环依赖
想象一下,我想编写一个处理播客提要的应用程序。要存储来自此类提要的解析信息,我会编写如下内容:
上述数据记录定义反映了数据类型之间常见的 1:n 关系:一个播客有很多集,而集属于一个播客。现在我在定义这样的播客时遇到了问题:请定义一个Podcast
我已经需要剧集列表但要定义一个Episode
实体我需要该Podcast
实体。在我看来,在haskell中解决这种循环依赖是不可能的......
我也认为上面的代码是我用其他语言编程的遗留物。在上述风格中,我会以 python 为例,但是这种编程语言有一个状态的概念。在python中,我可以首先定义一个Podcast
没有剧集的实体,然后用定义的实体初始化所有剧集,Podcast
然后episodes
将播客的字段设置为剧集列表。
我的问题:对播客和剧集之间的 1:n 关系建模的 Haskell 方法是什么?
对评论中问题的回答:
为什么一集必须引用特定的播客?有一个功能会很好
它会在我需要时返回剧集的播客。我知道,一种解决方案是将Podcast
实体也传递给剧集的每个函数,即我替换每个函数
我需要上述podcast
功能的地方
编写尽可能少的代码并且不必随身携带Podcast
实体,这将是非常棒的。
也许我稍微改变一下我的问题:在没有字段的情况下定义Episode
数据记录是完全可以的。podcast
如何实施
在这种情况下?
如果有人稍后制作包含其他播客的剧集的播客怎么办?就我而言,这不会发生,即使是这样,将同一集视为不同的集是完全可以的。(事实上,考虑到这个问题会将 1:n 关系提升为 n:n 关系,但如何在 haskell 中定义这些关系的主要问题仍然是相同的)。
scala - 如何在不同配置中将 SBT 用于相互依赖的项目
我想要以下 SBT 构建设置:
什么时候core
是主模块,包括域对象,并且testkit
是一个用于测试支持代码(构建器、匹配器、测试驱动程序等;而不是测试本身)的模块,它依赖于core
.
对于此设置,SBT 给出了一个错误,尽管由于使用了不同的配置(编译,然后根据编译,然后根据两者编译),Cyclic reference
因此实际上并没有循环依赖。core
testkit
core
core
test
我找到了一种通过替换其中一个dependsOn
use来解决此问题的肮脏方法unmanagedClasspath
,例如:
这感觉像是一种 hack,并且还会sbt-idea
生成不正确的 IntelliJ 项目(除其他外)。
有更好的解决方案的想法吗?SBT 是否支持这样的结构?
java - 在 Java 中检测 Hashmap 中的循环依赖
我有一个哈希图:
非循环情况的示例可能是:
循环情况的示例是:
我想拒绝循环情况,因此需要一个可以检测提供的哈希图是否有任何循环的函数:
我已经阅读了建议检测周期的算法的帖子,但是作为 java 的新手无法使用这些知识来构成上述功能。
python - 如何在自定义 PyYAML 构造函数中处理递归?
PyYAML 可以处理常规 python 对象中的循环图。例如:
片段#1。
这段代码成功了,所以很明显在加载序列化对象时有一些机制可以防止无限递归。当我编写自己的 YAML 构造函数时,如何利用它?
例如,sayNode
是一个具有瞬态字段foo
和的类,以及非瞬态bar
字段child
。只child
应将其放入 yaml 文档中。我希望这样做:
片段#2。
但它失败了:
我明白为什么了。我的构造函数不是为递归而构建的。它需要在完成构造父对象之前返回子对象,并且当子对象和父对象是同一个对象时会失败。
但显然 PyYAML 具有解决此问题的图遍历,因为 Snippet #1 有效。也许有一个传递来构造所有对象,第二个传递来填充它们的字段。我的问题是,我的自定义构造函数如何与这些机制联系起来?
这个问题的答案将是理想的。但是,如果答案是我不能使用自定义构造函数来做到这一点,并且有一个不太理想的替代方案(例如将YAMLObject
类混合到我的Node
类中),那么这个答案也会受到赞赏。
haskell - 如何在 Haskell 中处理这种循环模块依赖
层次结构的简化版本:
现在有一个模块 MyState:
最后是引入循环依赖的模块:
如您所见,我的 SomeType 导入 A 是因为我们的一个字段需要它。并且 A 正在导入状态,该状态导入了某种引入循环依赖的类型。
解决这种循环依赖的方法是什么?谢谢。