Forums Neueste Beiträge
 

Serialisierung mit SerializationInfo, Wissensfrage

06/04/2009 - 08:23 von Lorenz Ingold | Report spam
Ich verstehe den Sinn der Serialisierung, wenn sie mit dem Hilfsobjekt
SerializationInfo vorgenommen wird, nicht. Ich dachte immer, Serialisierung
habe den Sinn, Objekte in eine Art Stream (Textfile, XML-File, Binary-File)
zu transformieren, damit die Daten über ein Netz oder das Internet
irgendwohin gesendet werden können um am anderen Ende wieder deserialisiert
("konstruiert") werden zu können. Oder in einem anderen Szenario kann den
Zustand der Objekte "einfrieren", indem sie eben in serialisierter Form auf
Disk gespeichert werden und spàter genau dieser Zustand wieder zum Leben
erweckt wird (mit Deserialisierung). Bei der Customisierung mit Hilfe von
SerializationInfo wird nun aber ein SerializationInfo-Objekt gebildet, um
die Propertywerte des zu serialisierenden Objekts (nennen wir es A) zu
speichern. Dieses SerializationInfo-Objekt muss dann bei Deserialisieren von
A dem speziellen Konstruktor von A zugeführt werden, damit die Propertywerte
wieder rekonstruiert werden können. Was ist da der Sinn? Nun hat man A
serialisiert, aber auf Kosten eines anderen Objekts (SerializationInfo), das
NICHT serialisiert ist. Wie will man das nun über das Netz schicken? Ich
habe bis jetzt nirgends ein Hinweis gesehen über eine allfàllige
Serialisierung von SerializationInfo. Ich kann diese Sache einfach nicht
verstehen. Hat da jemand weitere Hintergründe zu dieser Sache?
 

Lesen sie die antworten

#1 Philipp Brune
06/04/2009 - 17:09 | Warnen spam
Hallo Lorenz,

Lorenz Ingold schrieb:
Ich verstehe den Sinn der Serialisierung, wenn sie mit dem Hilfsobjekt
SerializationInfo vorgenommen wird, nicht. Ich dachte immer,
Serialisierung habe den Sinn, Objekte in eine Art Stream (Textfile,
XML-File, Binary-File) zu transformieren, damit die Daten über ein Netz
oder das Internet irgendwohin gesendet werden können um am anderen Ende
wieder deserialisiert ("konstruiert") werden zu können.



das hast Du schon richtig verstanden.

Bei der Customisierung mit Hilfe von SerializationInfo wird nun aber ein
SerializationInfo-Objekt gebildet, um die Propertywerte des zu
serialisierenden Objekts (nennen wir es A) zu speichern. Dieses
SerializationInfo-Objekt muss dann bei Deserialisieren von A dem
speziellen Konstruktor von A zugeführt werden, damit die Propertywerte
wieder rekonstruiert werden können.



Genau, aber dieses SerializationInfo Objekt erzeugst Du ja nicht selbst,
sondern die Serialisierungslogik des .NET Frameworks erzeugt es beim
Prozess der (De)S|serialisierung für Dich und übergibt es Deiner Klasse.
Genauer gesagt dem Konstruktor bei der Deserialisierung, der
GetObjectData Methode bei der Serialisierung.


Was ist da der Sinn? Nun hat man A
serialisiert, aber auf Kosten eines anderen Objekts (SerializationInfo),
das NICHT serialisiert ist. Wie will man das nun über das Netz schicken?



So wie ich es verstehe, ist das SerializationInfo nur eine Art Adapter,
der es Dir ermöglicht die Art und Weise wie Dein Objekt (de)serialisiert
wird festzulegen indem Du mit AddValue bzw. GetValue selbst Deine Daten
dort hineinschreibst bzw. herausliest. Das .NET Framework wandelt dann
intern das SerializationInfo Objekt in eine entsprechende Repràsentation
(XML, Binary, etc) um, so wie es sonst auch einfach Dein Objekt
umwandeln würde.

Hoffe ich konnte etwas zum Verstàndnis beitragen,
Schöne Grüße
Philipp

Ähnliche fragen