Code-Beispiel
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());
}
}
}
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.IO.MemoryStream'
Übersicht über den FCL-Namensraum 'System.IO'
.NET & Visual Studio Community Portal