使用循环引用链进行对象克隆

时间:2012-10-18 01:28:45

标签: c# clone directed-graph cyclic-reference

我正在内存中的图形上运行一些操作,这会修改图形本身。我需要重复这些操作若干次,并且随后的重复必须在图的新副本上工作。由于图是通过解析文件生成的,所以我真的不想花时间为每次重复重新解析文件,所以我已经走了克隆原始图的路线。

我的nodeedgegraph类型都在实施ICloneable,但我的循环参考链存在问题。

Node存储来自它的定向Edge列表。 Edge存储权重及其指向的Node。当两个节点共享一个双向边时,当我尝试克隆任一节点时,我得到StackOverflowException,因为克隆任一节点的边缘列表总是意味着克隆另一个节点。

出于克隆目的,解决此循环引用的最佳方法是什么?

0 个答案:

没有答案