Sie sind hier: Startseite
 Liste aller Codebeispiele

Serialisieren in eine Byte-Folge

Ein Beispiel zum Einsatz der Klasse System.IO.MemoryStream aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Flexiblere Möglichkeiten als die direkte Serialisierung in eine Datei eröffnet die Serialisierung innerhalb des Speichers in eine Byte-Folge, die dann beliebig weiterverwendet (z.B. auch in ein BLOB-Feld einer Datenbank geschrieben)werden kann.

Serialisierung
Die Möglichkeit, eine Byte-Folge zu gewinnen, eröffnet die Klasse System.IO.MemoryStream. Das MemoryStream-Objekt benötigt keinen Parameter, die eigentliche Serialisierung mit Serialize() ist gleich. Zur Gewinnung der Byte-Folge in Form eines Array of Byte muss die Methode ToArray() auf dem MemoryStream-Objekt aufgerufen werden.

Die folgende Hilfsroutine ist eine Variante der bereits vorgestellten Serialisierung in eine Datei. Die Funktionsnamen sind gleich, durch die unterschiedlichen Parameter können die Funktionen jedoch unterschieden werden (Überladung).

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ### Serialisieren in Byte-Folge
Function bin_serialize(ByVal o) As Byte()
Dim form As New BinaryFormatter()
Dim stream As New MemoryStream()
form.Serialize(stream, o)
stream.Close()
out("Objekt serialisiert!")
Return (stream.ToArray)
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 byte[] Bin_Serialize(object o) {

// Serialisieren in Bytefolge
BinaryFormatter form = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
form.Serialize(stream, o);
stream.Close();
FclOutput.PrintOut("Objekt serialisiert!");
return (stream.ToArray());
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.IO.MemoryStream'  Übersicht über den FCL-Namensraum 'System.IO'  .NET & Visual Studio Community Portal