Wenn ich ISerializable in einer Kindklasse implementiere, muss das auch der Elternteil tun?

8

Ich muss ISerializable in einer abgeleiteten Klasse implementieren (um einige benutzerdefinierte Serialisierung / Deserialisierung durchzuführen), aber die Elternklasse ist als [Serializable] markiert. Die Serialisierung "funktioniert" (ich kann ohne Laufzeitfehler serialisieren und deserialisieren), aber es sieht so aus, als ob die Basisklassendaten nicht erhalten werden.

Ist die Tatsache, dass ich GetObjectData in der abgeleiteten Klasse implementiere die Serialisierung der Basisklasse negieren? Wenn ja, muss ich ISerializable in der Basisklasse implementieren und dann base.GetObjectData (...) in der abgeleiteten Klasse aufrufen, um die Daten zu erhalten, oder gibt es einen besseren Weg als info.AddValue (...) 100 Mal zu schreiben ?

bearbeiten & gt; Danke Tim. Du hast bestätigt, was ich vermutet habe. Das Problem selbst geht noch einen Schritt weiter. Die Basisklasse implementiert in meinem Fall BindingList (T), die selbst ISerializable nicht implementiert.

In der Zwischenzeit werde ich für jede Immobilie versuchen: Im ISerializable-Konstruktor  base.Property = info.GetValue (...);

und im GetObjectDate info.AddValue ("name", base.Property);

es sei denn, eine bessere Lösung wird von der wunderbaren SO-Community vorgeschlagen.

    
Steven Evers 06.05.2009, 17:08
quelle

1 Antwort

6
  

muss ich ISerializable in der Basisklasse implementieren und dann base.GetObjectData (...) in der abgeleiteten Klasse

aufrufen

Ja. Sobald Sie ISerializable implementieren, ist jede automatische Serialisierung ausgeschaltet.

Ebenso müssen Sie den geschützten Serialisierungskonstruktor sowohl in der Basisklasse als auch in der abgeleiteten Klasse implementieren.

    
Tim Robinson 06.05.2009, 17:11
quelle

Tags und Links