Was ist der beste Weg zu tief einen verbundenen Satz von Objekten zu klonen? Beispiel:Wie tiefverbundene Objekte in C# geklont werden?
class A {
B theB; // optional
// ...
}
class B {
A theA; // optional
// ...
}
class Container {
A[] a;
B[] b;
}
Die offensichtliche Sache zu tun ist, die Gegenstände zu gehen und klonen alles tief, wie ich dazu komme. Dies erzeugt jedoch ein Problem - wenn ich eine A
kloniere, die eine B
enthält, und diese B
ebenfalls in der Container
ist, wird diese B
zweimal geklont, nachdem ich die Container
geklont habe.
Der nächste logische Schritt ist ein Dictionary
erstellen und jedes Objekt nachschlagen, bevor ich es klonen. Dies scheint jedoch eine langsame und ungeeignete Lösung zu sein.
Irgendwelche Gedanken?
hier ist, wie ich es mache: http://valueinjecter.codeplex.com/wikipage?title=Deep%20Cloning&referringTitle=Home – Omu