2009-08-10 7 views
1

J'ai une classe qui implémente l'interface ISerializable pour la sérialisation personnalisée. Cela fonctionne très bien pour les propriétés de cette classe, mais la classe est une classe dérivée. Le problème que je rencontre est que les propriétés de la classe de base ne sont pas sérialisées pour moi. La classe de base a l'attribut sérialisable mais n'implémente pas ISerializable. Existe-t-il un moyen de sérialiser les propriétés de la classe de base sans devoir les ajouter manuellement dans la méthode ISerializable .GetObjectData de la classe dérivée?Sérialisation personnalisée des propriétés de la classe de base

Répondre

4

De MSDN

Comme je l'ai mentionné, l'interface ISerializable est extrêmement puissant car il permet un type de prendre le contrôle complet sur la façon dont se sérialisé et désérialisé instances du type. Ce pouvoir a un coût; le type est maintenant responsable de la sérialisation de tous les champs de son type de base ainsi que. La sérialisation des champs du type de base est facile si le type de base implémente également l'interface ISerializable - vous appelez simplement la méthode GetObjectData du type de base. Un jour, vous pourriez vous retrouver à définir un type qui doit prendre le contrôle de sa sérialisation, mais dont le type de base n'implémente pas l'interface ISerializable. Dans ce cas, votre classe doit sérialiser manuellement les champs du type de base.
Questions connexes