Tiefe Kopien von Objekten in .NET
erreichenDieser Artikel befasst sich mit der Herausforderung, tiefe Kopien von Objekten im .NET -Framework zu erstellen und eine Lösung anzubieten, die mit der inhärenten tiefen Kopienfunktionalität von Java vergleichbar ist.
Die Lösung:
Eine generische Dienstprogrammmethode liefert einen einfachen Ansatz für das tiefe Kopieren:
<code class="language-csharp">public static T DeepClone<T>(this T obj) { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; return (T)formatter.Deserialize(ms); } }</code>
Kritische Überlegung:
Es ist entscheidend zu erkennen, dass BinaryFormatter
, das in dieser Methode verwendet wird, veraltet ist und zur Entfernung von .NET geplant ist. Erforschen Sie alternative Deep Copy -Strategien für die zukünftige Kompatibilität.
Implementierungsdetails:
Um diese Methode zu verwenden, stellen Sie sicher, dass Ihre Klasse mit dem Attribut [Serializable]
gekennzeichnet ist. Fügen Sie die erforderlichen Namespaces ein:
<code class="language-csharp">using System.Runtime.Serialization.Formatters.Binary; using System.IO;</code>
Mechanismus:
Der Prozess umfasst zwei wichtige Schritte:
BinaryFormatter
serialisiert, wodurch es in einem Speicherstrom speichert. Vorbehalte:
Das obige ist der detaillierte Inhalt vonWie kann man Objekte in .NET tiefe kopieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!