rss search

Einfaches Beispiel für Serialisierung und Deserialisierung

line

Das ist keine Diskussion über Attribute und Interfaces für die Serialisierung!

 Um ein serialisierbares Objekt tatsächlich abzulegen oder zu lesen, sind zwei Dinge erforderlich:

  1. Ein Stream, in den geschrieben oder gelesen werden kann
  2. Ein Formatter, welcher den Inhalt festlegt, welcher in den Stream geschrieben wird

Beispielhaft sind zum Beispiel der BinaryFormatter und der SoapFormatter. Alle Formatter implementieren das IFormatter Interface. So ist es einfach möglich mehrere Formate zu unterstützen.

Als erstes muss eine Variable des Typs IFormatter angelegt werden, welche dann gemäß der Auswahl mit einer Implementierung gefüllt wird:

1
2
3
4
5
6
IFormatter formatter = null; 
#if (XML_FORMAT) 
  formatter = new SoapFormatter(); 
#else 
  formatter = new BinaryFormatter(); 
#endif

Dieser Code erstellt uns einen Formatter, welcher in XML (Soap) oder Binärformat ein serialisierbares Objekt beschreibt. Der formatter übernimmt dann mit einem Sreamobjekt das Schreiben des Objektes:

1
2
3
4
5
6
7
8
9
Hashtable test = new HashTable(); 
// füllen der Hashtable 
FileStream stream = new FileStream(/* Parameter in MSDN nachlesen */); 
formatter.Serialize(stream, test); 
stream.Flush(); 
stream.Close(); 
stream.Dispose(); 
stream = null; 
formatter = null;

Das Lesen ist ebenso einfach:

1
2
3
4
5
6
7
8
FileStream stream = new FileStream(/* Parameter in MSDN nachlesen */); 
Hashtable test = (Hashtable)formatter.Deserialize(stream); 
stream.Flush(); 
stream.Close(); 
stream.Dispose(); 
stream = null; 
formatter = null; 
// Auf Hashtable zugreifen
PDF Drucker    Sende Artikel als PDF an


Leave a Reply