问题标签 [cyclic-reference]

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 投票
2 回答
2007 浏览

java - java循环引用和垃圾收集

让我们考虑以下 2 个循环引用示例:

直接循环参考

弱引用

@Jon Skeet回答的以下SO 问题清楚地表明,只要循环中不存在来自已知根的“GC walk”,直接示例也将被垃圾收集。

我的问题如下:

是否有任何理由使用或不使用示例 2 中表示的习语 - 使用 Wea​​kReference 的习语?

0 投票
1 回答
49 浏览

oop - 循环依赖:为什么这些类不可耦合

我有一个类,Thing它有许多变量。我还有一个类,FileHandler,它将数据记录到日志文件中。

FileHandler特定于 a 的实例化,需要Thing打印 的几个实例变量Thing。所以,Thing被导入到FileHandler.

还有另一个类,OtherThing,它也需要一个Filehadler。不幸的是,Thing由于和. 这意味着进口和进口反过来进口。 OtherThingThingOtherThingFileHandlerThingThingOtherThingFileHandler

我似乎无法将这些分开。我会根据评论在这篇文章中添加更多内容。有什么明显的原因我不能在这里分开我的班级吗?这似乎是由于存在三个类所需的公共数据这一事实。

0 投票
1 回答
55 浏览

javascript - 循环引用在事件处理函数中似乎不起作用

我有一个名为的对象paperClass(尽管我知道,JavaScript 中不存在类)。这包含对 a 的引用divElement。现在,通过悬停divElement我想获得对该paperClass对象的引用。我尝试了以下方式:

我也尝试了.attr()and$data()方法。不幸的是,我没有成功。你有什么想法?

0 投票
1 回答
75 浏览

c# - 尝试添加引用时c#中的循环依赖问题

我有两个类库(比如说 LibA 和 LibB)。LibA 正在使用 LibB 的一些功能,所以我在 LibA 中添加了 LibB 的引用。

现在LibB也需要用到LibA的一些代码。由于循环依赖的事情,我现在无法将 LibA 的引用添加到 LibB。现在我的 LibB 可以访问 LibA 的代码,我该怎么办?

0 投票
4 回答
1006 浏览

python - 如何正确处理 Python 中的循环模块依赖项?

试图找到一个好的和适当的模式来处理 Python 中的循环模块依赖。通常,解决方案是删除它(通过重构);但是,在这种特殊情况下,我们真的希望拥有需要循环导入的功能。

编辑:根据下面的答案,此类问题的通常攻击角度将是重构。但是,为了这个问题,假设这不是一个选项(无论出于何种原因)。

问题:

logging模块需要该configuration模块的一些配置数据。但是,对于某些configuration功能,我真的很想使用logging模块中定义的自定义日志记录功能。显然,将logging模块导入configuration会引发错误。

我们能想到的可能解决方案:

  1. 不要这样做。正如我之前所说,这不是一个好的选择,除非所有其他可能性都是丑陋和糟糕的。

  2. 猴子补丁模块。这听起来还不错:在初始导入之后和实际使用它的任何功能之前logging动态加载模块。不过,这意味着定义全局的、每个模块的变量。configuration

  3. 依赖注入。我已经阅读并遇到了依赖注入替代方案(特别是在 Java Enterprise 领域),它们消除了一些令人头疼的问题;但是,它们可能过于复杂而无法使用和管理,这是我们想要避免的。不过,我不知道全景图在 Python 中是如何描述的。

启用此功能的好方法是什么?

非常感谢!

0 投票
2 回答
1011 浏览

c++ - C++ 类方法前向声明

有没有办法重新声明一个类来定义只声明到这里的方法?

例如。就像是:

代替

原因是我使用类定义中定义的方法创建了很多代码,而不使用标题。到目前为止我还没有循环引用,但最近有需要。我不喜欢通过Type::method语法定义一堆方法,因为在类的后一个定义之前只需要知道很少的方法。

所以我有点喜欢backward declaration, 在循环引用之前声明或定义几个方法,然后再定义整个类。

0 投票
0 回答
357 浏览

wcf - WCF 循环引用,无法使用 IsReference = true 解决

我知道这个问题已经问了一百万次了。但我的情况,我很奇怪,我不明白。我得到了一个循环引用,下面是我的代码/配置:

  1. 我将 Entity 作为所有实体的基类。

    /li>
  2. 继承类是这样的,由Entity Framework 6创建

    我有Group, User, GroupUser, GroupAdministrator. 我想这里的名字很清楚。GroupGroupUserUserGroupUserGroupUserGroup & User

  3. 在 DbContext 中,代理创建被关闭,延迟加载被打开。

  4. 错误来自此方法,当我调用它时,我得到一个 cyclic reference.

    我调试,根本原因是这样的:_ => _.GroupUsers.Select(__ => __.User)

    _groupRepository.GetAll():_

    /li>
  5. 为什么我需要?_ => _.GroupUsers.Select(__ => __.User)因为我需要在列出所有组时包括该组的用户。

0 投票
1 回答
1601 浏览

rust - 在 Rust 中引用包含结构(并在其上调用方法)

编者注:此代码示例来自 Rust 1.0 之前的版本,在语法上不是有效的 Rust 1.0 代码。此代码的更新版本会产生不同的错误,但答案仍然包含有价值的信息。

我正在尝试在 Rust 中编写一个容器结构,其中的元素还存储对包含容器的引用,以便他们可以在其上调用方法。据我所知,我需要通过Rc<RefCell<T>>. 这个对吗?

到目前为止,我有以下内容:

我觉得我在这里错过了一些东西。访问 a 的内容Rc<RefCell<T>>真的这么困难吗(in poke_container)?还是我以错误的方式解决问题?

最后,假设方法是正确的,我将如何编写一个add方法Container以便它可以填充container字段Element(假设我将字段更改为 type ?据我所知,Option<Rc<RefCell<T>>>我无法创建另一个Rc&mut self

0 投票
1 回答
258 浏览

c# - 如何解决c#项目中的这种循环依赖?

我正在修改一个项目(1)(Windows 服务)。我得到了一个实用项目(2),我正在使用这是我的项目。ConfigurationManager.AppSettings[]我不知道为什么,但是这个(2)使用我在我的项目中使用自定义配置阅读器进行了初始化,因为我想要我自己的 XML 结构。该实用程序没有使用构造函数或方法进行初始化的选项。

我不想过多地更改此实用程序,因此我只是使用 AppSettings 将此初始化更改为 (1) 中的配置类(通过从 (2) 创建对 (1) 的依赖项)。我知道这不是解决问题的方法。如果我清理我的解决方案,那将是一团糟。

我可以想一些办法。但不确定哪种方法是正确的?

  1. 有另一个配置文件
  2. 继续循环依赖
  3. 传递参数并更改实用程序
  4. (参数太多)我应该将所有值作为字符串传递并在实用程序中编写逻辑以将它们转换回来吗?

项目一

项目 2

0 投票
1 回答
165 浏览

c++ - 命名空间内的类的循环依赖问题

我有一个循环依赖问题。我有两个头文件,它们相互依赖。我遇到的问题与命名空间中的类有关。

文件 #1

文件 #2

如何在文件#2 中转发声明 sef::Sub 类?