Liste aller Codebeispiele
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 bin_deserialize(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 FCL_Buch._System_Runtime_Serialization {
// 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'
Übersicht über den FCL-Namensraum 'System.Runtime.Serialization.Formatters.Binary'
Portal dotnetframework.de
|
|