Code-Beispiel

Hilfsroutine zur binären Serialisierung und anschließender Speicherung in einer Datei

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!

Serialisieren in Binärdatei
In dem folgenden Listing wird mit der FileStream-Klasse in eine Datei serialisiert (persistent gemacht).

Programmcodebeispiele Visual Basic .NET (VB.NET)

' --- Serialisieren in Binärdatei
Sub bin_serialize(ByVal o, ByVal datei)
Dim form As New BinaryFormatter()
Dim stream As FileStream
stream = New FileStream(datei, _
FileMode.Create, FileAccess.Write, _
FileShare.None)
form.Serialize(stream, o)
stream.Close()
out("Objekt wurde gespeichert in " & datei)
End Sub

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;
}
}
}

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.


 

Querverweise

 Liste aller Codebeispiele  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

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (5. Auflage Oktober 2022 (9. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autor(en): Dr. Holger Schwichtenberg
Erschienen 2022
Umfang: 1426 Seiten
ISBN: 3446472967

Beratung & Support

Schulungen zu diesem Thema

  Anfrage für eine individuelle Schulung zum Thema VISUAL BASIC C#   Gesamter Schulungsthemenkatalog

Bücher zu diesem Thema

  Alle unsere aktuellen Fachbücher   E-Book-Abo für ab 99 Euro im Jahr