Клонирование объектов с циклической цепочкой ссылок
Я выполняю некоторые операции над графиком в памяти, которые изменяют сам график. Мне нужно повторить эти операции несколько раз, и последующие повторы должны работать над новой копией графика. Так как график генерируется путем синтаксического анализа файла, я не хочу тратить время на повторный анализ файла для каждого повторения, поэтому я пошел по пути клонирования исходного графа.
мой node
, edge
а также graph
все типы реализуют ICloneable
, но у меня есть проблема с циклической цепочкой ссылок.
Node
хранит список направленных Edge
исходит из этого. Edge
хранит вес и Node
это указывает на. Когда два узла имеют двунаправленное ребро, я получаю StackruException
когда я пытаюсь клонировать любой узел, поскольку клонирование списка ребер любого узла неизменно означает клонирование другого узла.
Каков наилучший подход для разрешения этой циклической ссылки для целей клонирования?