问题标签 [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.
.net - 解析实现 ISerializable 的对象的循环引用
我正在编写自己的 IFormatter 实现,但我想不出一种方法来解决两种都实现 ISerializable 的类型之间的循环引用。
这是通常的模式:
然后我这样做:
如果我使用开箱即用的 BinaryFormatter 对 b 进行序列化和反序列化,则上述对引用相等性的测试会如预期的那样返回 true。但我无法想出在我的自定义 IFormatter 中实现这一点的方法。
在非 ISerializable 情况下,一旦解决了目标引用,我就可以简单地使用反射重新访问“待定”对象字段。但是对于实现 ISerializable 的对象,不可能使用 SerializationInfo 注入新数据。
谁能指出我正确的方向?
c# - 在这种情况下避免循环引用的设计
这是我们的依赖树:BigApp -> Child Apps -> Libraries
我们所有的组件都大量使用上述库之一(LibA)。但它有“少数”公共方法需要来自“更高级别”程序集的类,我们希望避免 CIRCULAR 引用。您对此有什么好的设计建议?
database - 循环参考数据库的一个例外——是这个吗?
我有 4 个表,链接在一个循环引用中 - 我记得在大学时我被告知这很糟糕,但是也有例外......我希望这是其中之一 :)
我的数据库包含 4 个表;教师、班级、科目和教师班级。
以下总结了我的关系:
- 一个老师可以有很多课
- 一个班级可以有很多老师(所以 Teachers_classes 消除了这里的多对多)。
- 一个类可以有很多科目
- 一个学科只能有 1 个班级
- 一个老师可以有很多科目
如果你能想象这一点,我的 ERD 看起来像一个正方形(或圆形)......我已经构建了我的简单应用程序,并被其他人提示检查这个问题..请有人告诉我这是一个例外,为什么?我不记得我被教过的任何东西,但我的应用程序似乎完全可以满足我的要求!
database-design - DB 设计 - 链接到没有循环引用问题的父级
我无法为以下问题提出解决方案。
假设我有一个如下所示的数据库:
问题表
发行说明表
问题分配表
我想允许将一个问题链接到另一个问题。我考虑在问题表中添加一个名为 ParentIssueId 的列,这将使我能够链接问题,但我预见如果我完成此实现,问题表中会发生循环引用。有没有更好的方法来做到这一点,如果有,怎么做?
谢谢
java - Java:使用反射转储对象信息时如何避免循环引用?
我修改了对象转储方法以避免循环引用导致 StackOverflow 错误。这就是我最终的结果:
该方法最初是这样调用的:
所以,基本上我添加了一个 excludeList ,其中包含所有之前检查过的对象。现在,如果一个对象包含另一个对象并且该对象链接回原始对象,则它不应该沿着该链进一步跟随该对象。
但是,我的逻辑似乎有缺陷,因为我仍然陷入无限循环。有谁知道为什么会这样?
编辑:
我仍然收到 StackOverflow 错误
我更新的方法:
编辑2:
您的解决方案似乎非常好。不幸的是,即使我只在一个只有 4 个字段的小类上使用过它,我现在也遇到了 OutOfMemory 错误。这是我最终得到的代码:
这么小的对象不应该导致 OutOfMemory 错误。
有任何想法吗?
编辑3:
改写版:
我假设 getClass().isPrimitive() 仍然适用于数组索引,但我可能错了。如果是这样,您将如何处理?此外,其他 getClass() == Integer 等检查对我来说似乎是不必要的,因为 isPrimitive() 检查应该解决这个问题,对吧?
无论如何,在一个简单的对象上使用时,我仍然会遇到内存不足错误:
perl - Perl 中的垃圾收集
与 Java 不同,Perl 使用引用计数进行垃圾收集。我曾尝试搜索一些关于 C++ RAII 和智能指针以及 Java GC 的先前问题,但不了解 Perl 如何处理循环引用问题。
谁能解释 Perl 的垃圾收集器如何处理循环引用?有没有办法回收程序不再使用的循环引用内存,或者 Perl 完全忽略了这个问题?
language-agnostic - 如何解决这种循环的、双向的依赖?
我有一个 RequestHandler 类和一个 RequestListener 类。RequestHandler 创建一个 RequestListener 并将其传递给它自己的引用。RequestListener 依次调用 RequestHandler 上的方法来处理不同类型的请求(例如,handleTypeARequest()、handleTypeBRequest() 等)。不幸的是,RequestHandler 也调用 RequestListener 上的方法(例如 processNextRequest()),所以我有一个循环依赖:
这意味着两者之间的耦合更紧密,通常被认为是代码异味。
一种解决方案是使用不同的对象来封装每个请求,而不是使用不同的方法。当出现提示时,RequestListener 可以处理请求并为其返回某种类型的 Request 对象。不幸的是,我不太喜欢这种方法,部分原因是更多对象和类增加了复杂性,部分原因是性能问题(这很重要);直接在 RequestHandler 上调用 handleXXXRequest() 方法比创建一堆对象要快得多,并且可能还维护一个堆栈以在需要时缓冲它们。
这个问题还有其他解决方案吗,而且,这真的是一个问题吗?
.net - VB.NET - 自定义序列化和循环引用,有干净的解决方案吗?
我正在实现一些自定义序列化(到字节数组),并且遇到了处理循环引用的问题。
例子:
序列化 A 时,我必须序列化 B 的每个实例。
但是,我在序列化 B 时遇到了问题。
如何在不导致无限循环的情况下记录 B 的父级?
一个主意:
如果我知道 B 的实例只会通过 A 的实例的序列化来序列化,那么我可以从 A 的实例处理 MyParent 引用的设置,甚至不将该信息记录在实例的字节缓冲区中B的
这感觉不太对,但它可能是最好的解决方案。
有没有更干净的方法来处理这种情况?
iphone - 为持有循环引用的对象获取 [NSObject 描述]
我有一个 NSDictionary。它包含几个对象,包括一个子 NSDictionaries 数组,每个子对象都有一个对象,作为@"Parent"
指向父 NSDictionary 的那个点。
这个循环引用破坏了使用经典调用检查对象的能力,例如:
有人会推荐一种检查对象的解决方法吗?
xml - .NET 4、WCF REST 服务、实体框架、序列化和循环引用
这个标题真够拗口的。让我尽量说清楚...
我有一个用 .NET 4 编写的 WCF REST 服务,它使用实体框架将一些数据从 SQL Server 提取到对象列表中。然后将对象作为 XML 返回给客户端。问题是 XML 由于我的模型的关系而相互引用。
下面是一些代码来帮助说明问题:
我的模型:http ://bara.stardock.com/images/activity_model.png
处理服务逻辑的活动类:
上述类的接口:
Activity 类是由实体框架根据我的活动表模型自动生成的。但是,我确实通过创建一个 ActivitiesList 对象扩展了这个类:
因此,为了再次解释我的问题,我的 XML 不是像它应该的那样简单地返回一个 Activity 列表,而是返回一个 Activity 列表,其中一些活动引用了基本活动中的其他活动。这听起来令人困惑,但请看下面的图片:
返回的 XML:http ://bara.stardock.com/images/activity_xml1.png
引用“i8”的活动是指实际在活动内部的另一个活动,ID 为“i2”:http ://bara.stardock.com/images/activity_xml2.png
我的问题是,如何从 Activity 对象中删除所有这些额外的关系?我希望它只是一个 Activity 列表,没有由实体框架自动生成的嵌套 ActivityType、EntityKey 等。
我希望我已经充分解释了自己。如果没有,请告诉我您还想查看哪些其他详细信息,我会提供。
巴拉