Sie sind hier: Startseite
 Liste aller Codebeispiele

Hilfsroutine zur Deserialisierung eines Objekts aus einer Binärdatei

Ein Beispiel zum Einsatz der Klasse System.Runtime.Serialization.Formatters.Binary.BinaryFormatter aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Der binäre Serialisierer wandelt ein beliebiges Objekt bzw. eine Objekthierarchie in eine binäre Zeichenfolge um. Zirkuläre Referenzen in Objekthierarchien erkennt der Serialisierer und verarbeitet diese korrekt.
Für die folgenden Unterroutinen wird neben dem Namespace System.Runtime.Serialization.Formatters.Binary auch der Namespace System.IO benötigt, da die serialisierten Objekte in einer Textdatei persistent gemacht und später von dort wieder gelesen werden.
Für die Serialisierung wird nur ein einziger Methodenaufruf benötigt: Serialize() erwartet im ersten Parameter ein Stream-Objekt (ein Objekt einer Klasse, die von System.IO.Stream abgeleitet ist, z.B. FileStream, MemoryStream, NetworkStream, CryptoStream, BufferedStream) und im zweiten Parameter das zu serialisierende Objekt. Als Stream wird in der folgenden Unterroutine eine Datei verwendet. bin_serialize() kapselt diese Funktionalität.

Auch für die Deserialisierung ist nur ein Methodenaufruf notwendig. Deserialize() erzeugt aus einem übergebenen Stream ein Objekt, ggf. mit allen Unterobjekten.

Der parameterlose Konstruktor wird beim Deserialisieren nicht aufgerufen!


bin_deserialize() kapselt die Deserialisierung aus einer Datei.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' --- Deserialisieren aus einer Binärdatei
Function bindeserialize(ByVal Datei As String)
As Object
Dim o As Object
Dim form As New BinaryFormatter()
Dim stream As FileStream
stream = New FileStream(Datei, _
FileMode.Open, FileAccess.Read, _
FileShare.Read)
o = form.Deserialize(stream)
stream.Close()
out("Objekt wurde geladen aus " & Datei)
Return o
End Function

Programmcodebeispiele CSharp (C#)

using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Data;

namespace FCLBuch._System_RuntimeSerialization {

// Hilfsfunktionen für Serialisierung
public class SerializationHelper {
public static object Bin_Deserialize(string datei) {

// Deserialisieren aus einer Binärdatei
BinaryFormatter form = new BinaryFormatter();
FileStream stream = new FileStream(datei, FileMode.Open);
object o = form.Deserialize(stream);
stream.Close();
FclOutput.PrintOut("Objekt wurde geladen aus " + datei);
return o;
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter'  Übersicht über den FCL-Namensraum 'System.Runtime.Serialization.Formatters.Binary'  .NET & Visual Studio Community Portal