Serialisieren

12/11/2008 - 17:17 von Rene Grobel | Report spam
Hallo NG,

ich habe ein Objekt Test, das zu einem Bytearray gemacht werden soll. Das
funktioniert auch.
Das Problem ist:
Ich erstelle eine Instanz von Test in einer Form MyForm.
Diese Form MyForm bekommt als Eigenschaft (dim Test as Test) diese Instanz
zugewiesen.
Jetzt kann ich die Instanz nicht mehr serialisieren, weil als Fehler kommt,
daß die
Form nicht serialisierbar ist.
Wenn ich jetzt MyForm .Test=Nothing setze - dann geht es wieder.

Warum ist das so und wie kann man ermitteln, welche anderen Objekte (wie bei
mir eben die MyForm) die Instanz als Member führen?

Vielen Dank
grüße von rene
 

Lesen sie die antworten

#1 Elmar Boye
12/11/2008 - 22:01 | Warnen spam
Hallo Rene,

"Rene Grobel" schrieb ...
ich habe ein Objekt Test, das zu einem Bytearray gemacht werden soll. Das Problem ist: Ich erstelle eine Instanz von Test in einer
Form MyForm.
Diese Form MyForm bekommt als Eigenschaft (dim Test as Test) diese Instanz
zugewiesen.
Jetzt kann ich die Instanz nicht mehr serialisieren, weil als Fehler kommt, daß die Form nicht serialisierbar ist.
Wenn ich jetzt MyForm .Test=Nothing setze - dann geht es wieder.



Verwende das Attribut NonSerialized für das Feld, dann wird es in
nicht in die Serialisierung einbezogen, z. B.
<Serializable> _
Class Test
<NonSerialized>private _form As Form
...
End Class

beim deserialisieren fehlt dann allerdings der Verweis auf die
Formularinstanz.

Warum ist das so



Form (bzw. alles auf Control basierendes uam. aus Windows Forms)
ist nicht serialisierbar, da es auf Windows Interna beruht, die
nicht so einfach deserialisiert werden können.
Willst Du z. B. Einstellungen sichern, müsstest Du das explizit
für die jeweiligen Eigenschaften implementieren.

und wie kann man ermitteln, welche anderen Objekte (wie bei
mir eben die MyForm) die Instanz als Member führen?



Eine direkte Methode dafür gibt es nicht, solche Konflikte
zu behandeln obliegt letztendlich Dir.

Gruß Elmar

Ähnliche fragen