相互接続された一連のオブジェクトをディープクローンする最良の方法は何ですか? 例:
class A {
B theB; // optional
// ...
}
class B {
A theA; // optional
// ...
}
class Container {
A[] a;
B[] b;
}
当然行うべきことは、オブジェクトをたどって、到達したすべてのものをディープ クローンすることです。ただし、これにより問題が発生します。A
を含み、B
それB
も にあるを複製するとContainer
、B
を複製した後に 2 回複製されContainer
ます。
次の論理的なステップは、Dictionary
クローンを作成する前に を作成し、すべてのオブジェクトを検索することです。ただし、これは遅くて見苦しい解決策のようです。
何かご意見は?