问题标签 [circular-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 投票
9 回答
11248 浏览

.net - Microsoft 如何创建具有循环引用的程序集?

在 .NET BCL 中有循环引用:

  • System.dllSystem.Xml.dll
  • System.dllSystem.Configuration.dll
  • System.Xml.dllSystem.Configuration.dll

这是 .NET Reflector 的屏幕截图,显示了我的意思:

在此处输入图像描述

Microsoft 如何创建这些程序集对我来说是个谜。是否需要特殊的编译过程才能允许这样做?我想这里正在发生一些有趣的事情。

0 投票
1 回答
683 浏览

.net - 在 .NET 框架中遇到自递归程序集引用

我正在编写一些 C# 代码,递归地遍历基本程序集的引用程序集,构建这些引用的有向无环图以进行拓扑排序。我通过Assembly 类上的GetReferencedAssemblies()方法来做到这一点。

在测试代​​码时,令我惊讶的是,.NET 框架中的某些程序集显然将自己列为程序集引用。一个这样的例子是System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089列出了System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089作为参考,可以在 Reflector 中验证.

一旦我意识到这一点,通过比较 AssemblyNames 来打破无限递归是微不足道的,但我对这种情况很好奇,因为我自己无法生成自递归程序集。(我可以在谷歌上找不到任何信息,并且将自己添加为参考不会使生成的程序集自递归。)

简而言之:自递归程序集引用真的“洁净”吗?一些系统程序集引用自己的理由是什么?

谢谢。

0 投票
6 回答
7224 浏览

c# - 解析循环引用 (C#)

我在循环引用/依赖方面遇到了几个问题,我整天都坐在那儿。我的思维过程一定有问题,我只是不明白。

这是我的项目:

当前参考/依赖:

我想以我的服务项目具有所有服务的方式来构建我的项目,我的域项目是模型、存储库和用于查询模型的“流利”扩展,并且主要和实用程序项目几乎是不言自明的。

遇到的问题:

1) 我的 Flip.Services 项目中有一个 EmailService,它需要发送本地化的电子邮件。所有本地化都在 Flip.Main 的 App_GlobalResources 中完成。现在不知道如何将强类型电子邮件和其他本地化资源获取到我的服务层,因为 Flip.Main 已经依赖于服务层,因此我可以让它依赖回主项目。

2) 我有业务类,例如代表强类型搜索查询的 CustomerSearchFilter。我想要 Flip.Domain 项目之外的那些业务类,因为它们不是域模型的一部分。但是,在我的 CustomerSearchFilter 类中,我有域类实例(例如 CustomerGroup),因此它需要了解域类。同时我的 Flip.Domain 项目中的 Fluent 接口需要知道 CustomerSearchFilter 是什么,以便我可以将它应用到我的 IQueryable 接口。再次循环引用。

3) 我有一个自定义的 [AuthorizeSessionState] 属性,我用它来装饰我的 ASP.NET MVC Flip.Main 项目中的特定控制器操作。这是一个 ActionFilterAttribute,它需要实例化位于我的 Flip.Services 项目中的我的 SessionService。我不能把它放到我的 Utility 类中(因为 Flip.Services 已经引用了 Flip.Utility)。我认为他们也不应该在 Flip.Main 中——我是否必须为此制作另一个项目!?

(还有 20 个)

我觉得我在某个地方犯了错误,尤其是当我读到其他人通常不会遇到循环引用问题时。帮助?

0 投票
5 回答
7330 浏览

c++ - 没有指针的 C++ 循环引用

有没有办法在不使用指针的情况下定义循环引用?

我需要这样的东西:

谢谢!

0 投票
3 回答
13281 浏览

circular-dependency - 如何在多级引用和依赖项中检测循环逻辑或递归

我有一个像这样的多级依赖关系图,我需要检测该图中的任何循环引用。

A = B

B = C

C = [D, B]

D = [C, A]

有人有这样的问题吗?

有什么解决办法???

谢谢和对不起英语。

=========更新==========

我有另一种情况。

1

2 = 1

3 = 2

4 = [2, 3]

5 = 4

在这种情况下,我的递归代码在“4”引用中迭代了两次,但是这个引用不会生成无限循环。我的问题是要知道函数何时迭代引用不止一次并且不是无限循环,何时是无限循环,以通知用户。

1 = 4

2 = 1

3 = 2

4 = [2, 3]

5 = 4

这种情况与第二个例子有点不同。这会产生一个无限循环。我怎么知道案例何时产生无限循环?

0 投票
3 回答
14488 浏览

python - 如何以及何时在 Python 中适当地使用弱引用

我有一些代码,其中类的实例具有彼此的父<->子引用,例如:

认为这会创建循环引用rootc1并且c2在 Run() 完成后不会被释放,对吧?那么,如何让他们获得自由呢?我想我可以做类似的事情root.children.clear(),或者self.parent = None- 但是如果我不知道什么时候做呢?

现在是使用weakref 模块的合适时机吗?我究竟要弱化什么?属性parentchildren属性?整个对象?上述所有的?我看到有关 WeakKeyDictionary 和weakref.proxy 的讨论,但我不清楚在这种情况下应该如何使用它们(如果有的话)。

这也在 Python 2.4 上(无法升级)。

更新:示例和摘要

对哪些对象进行弱引用取决于哪些对象可以在没有另一个的情况下生存,以及哪些对象相互依赖。寿命最长的对象应该包含对寿命较短的对象的弱引用。类似地,不应该对依赖项进行弱引用 - 如果是,则即使仍然需要依赖项,也可能会默默地消失。

例如,如果您有一个树结构 ,root有孩子 ,kids但可以没有孩子而存在,那么该root对象应该为其 . 使用弱引用kids。如果子对象依赖于父对象的存在,情况也是如此。下面,子对象需要一个父对象才能计算其深度,因此为parent. 不过,该kids属性的成员是可选的,因此使用了weakrefs 来防止循环引用。

为了翻转关系,我们有类似下面的东西。在这里,这些Facade类需要一个Subsystem实例才能工作,因此它们对所需的子系统使用强引用。 Subsystem但是,s 不需要 aFacade来工作。 Subsystems 只是提供了一种方法来通知Facades 彼此的操作。

0 投票
5 回答
9310 浏览

c# - c#:查找循环引用/按正确顺序编译的实用程序?

任何人都知道一个好的实用程序或程序来询问所有项目的解决方案或目录,并告诉你循环引用在哪里以及可能按顺序编译。

记得前段时间看到过,但是到处都找不到。。

0 投票
1 回答
294 浏览

c++ - 声明没有指针的默认参数循环引用?

有什么方法可以在没有间接的情况下在头文件中声明这些类?

Visual C++ 2008 告诉我:

并指向 B 的前向声明(“class B;”),显然在下面看不到 B 的构造函数。A 不能跟随 B,因为 B 包含 A 作为成员。

如果必须使用间接,最好的方法是什么?也许在 C++0x B 中的 A 可能是一个 unique_ptr 成员?或者,也许有一个提升类纯粹是为了回避这个问题?

0 投票
3 回答
9098 浏览

javascript - javascript、循环引用和内存泄漏

从我回忆的不远的过去来看,Javascript 解释器在面对循环引用时会遇到内存泄漏问题。

在最新的浏览器中仍然如此吗?(例如 Chrome、FF 3.5 等)

0 投票
9 回答
38364 浏览

asp.net-mvc - Json 和循环引用异常

我有一个对象具有对另一个对象的循环引用。鉴于这些对象之间的关系,这是正确的设计。

为了显示

正如预期的那样,当我尝试使用 Json 序列化机器或客户对象时遇到问题。我不确定如何解决这个问题,因为我不想破坏 Machine 和 Customer 对象之间的关系。解决此问题的选项有哪些?

编辑

目前我正在使用Controller 基类提供的 Json 方法。所以我正在做的序列化是基本的: