J'ai une classe dérivée qui ajoute seulement des méthodes à une classe de base. Comment sérialiser la classe dérivée afin qu'elle corresponde à la sérialisation de la classe de base? à savoir le xml sérialisée de la classe dérivée devrait ressembler à:Comment sérialiser une classe dérivée comme classe de base
<BaseClass>
...
</BaseClass>
par exemple Ce qui suit va lancer une exception InvalidOperationException "Le type DerivedClass n'était pas prévu.Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier les types qui ne sont pas connus statiquement."
Class BaseClass {}
Class DerivedClass : BaseClass {}
DerivedClass derived = new DerivedClass();
StreamWriter stream = new StreamWriter("output file path");
XmlSerializer serializer = new XmlSerializer(GetType(BaseClass));
serializer(stream, derived);
fait le travail, merci. –
Les gars, j'ai le même problème ici, mais cela n'a pas fonctionné. Ma classe de base a été créée à partir d'un XSD, donc je ne sais pas quoi mettre dans le [XmlRoot] est le nom de la classe, ou le nom de l'élément racine de la classe de base (devrais-je spécifier son espace de noms, etc etc?) – Tejo
Existe-t-il une solution si seulement la base mais pas le type dérivé est connu? –