Probleme mit Serialisierung

29/01/2009 - 14:57 von Albrecht Schäffer | Report spam
Hallo,

ich möchte eigene Klassen serialisieren. Es handelt sich dabei um eine
Klasse die eine generische Liste einer anderen Klasse (Objekt2) enthàlt.
Diese gelistete Klasse enthàlt auch wieder drei generische Klassen. Alle
hier verwendeten Klassen sind als mit dem Pràdikat <Serializable()>
versehen.

Eine Serialisierung mit SOAP scheitert an den Listen, beim Binaary-Formater
kommt immer die Fehlermeldung,
dass eine Klasse, welchen einen Verweis auf das zu serialisierende Objekt2,
nicht als serialiserbar gekenntzeichnet ist.

Eigentlich will ich doch nur das Datenmodell und nicht das ganze Projekt
serialisieren. Was mache ich falsch?

Liebe Grüsse

Albrecht Schàffer
 

Lesen sie die antworten

#1 Elmar Boye
30/01/2009 - 10:27 | Warnen spam
Hallo Albrecht,

Albrecht Schàffer schrieb:
ich möchte eigene Klassen serialisieren. Es handelt sich dabei um eine
Klasse die eine generische Liste einer anderen Klasse (Objekt2) enthàlt.
Diese gelistete Klasse enthàlt auch wieder drei generische Klassen. Alle
hier verwendeten Klassen sind als mit dem Pràdikat <Serializable()>
versehen.

Eine Serialisierung mit SOAP scheitert an den Listen, beim
Binaary-Formater kommt immer die Fehlermeldung,
dass eine Klasse, welchen einen Verweis auf das zu serialisierende
Objekt2, nicht als serialiserbar gekenntzeichnet ist.



Beim Serialisieren müssen nicht nur die eigenen Klassen,
sondern auch alle Klassen, auf die Du einen Bezug herstellt,
und deren Abhàngigkeiten serialisierbar sein.
Man spricht dabei von einem Objekt-Graphen.

Wenn Du z. B. einen Verweis auf ein Formular hast, so
müßte das Formular und alle darin enthalten Instanzen
(Steuerelemente, Schriftarten, Bitmaps uam.) serialierbar sein.
Das ist nur leider nicht so - weil für vieles nicht realsierbar
(man kann ein angezeigtes Fenster nicht einfach so speichern
und woanders wieder auf dem Bildschirm erscheinen lassen).


Eigentlich will ich doch nur das Datenmodell und nicht
das ganze Projekt serialisieren.



Trenne die Klassen auf, so dass die serialisieren Daten
in einer eigenen Definition enthalten sind, die keine
Verweise auf flüchtige Instanzen (wie ein aktives Formular)
enthalten. Vielmehr sollten nur diese flüchtigen Instanzen
Verweise auf Deine serialisierbaren Klassen speichern.

Wo das in einigen Fàllen nicht geht, schließe die Felder
von der Serialisierung aus, das geht u. a. über das
<NonSerializedAttribute>.
Wobei Du dort dafür sorgen mußt, dass die Klasse ohne
das Element lebensfàhig ist, bzw. es auf andere Weise
wieder erstellen kann - z. B. ein neues Formular erzeugen,
was wiederum das Speichern anderer Daten erforderlich machen kann.

Unter
<URL:http://msdn.microsoft.com/de-de/library/7ay27kt9(VS.85).aspx>
"Serialisierung"
findest Du weitere Informationen wie Du die Serialisierung
beeinflussen kannst.

Gruß Elmar

Ähnliche fragen