Maison >développement back-end >C++ >Comment puis-je sérialiser des classes dérivées à l'aide de XmlSerializer ?
Utilisez XmlSerializer pour sérialiser les classes dérivées
Les développeurs peuvent rencontrer une InvalidOperationException s'ils utilisent XmlSerializer lorsqu'ils tentent de sérialiser un objet qui contient une classe abstraite dans le cadre de ses propriétés. Surmonter cet obstacle nécessite une gestion efficace des classes dérivées lors de la sérialisation.
Solution
XmlSerializer propose trois méthodes pour résoudre ce problème :
[XmlInclude]
Attribut : Appliqué à la classe de base, il indique que le sérialiseur contient des classes dérivées.
<code class="language-csharp"> [XmlInclude(typeof(ChildA))] [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } }</code>
XmlElement
/XmlArrayItem
Attributs : Ces attributs doivent être appliqués aux propriétés portant des listes, spécifiant le type de chaque élément de classe dérivé.
<code class="language-csharp"> [XmlElement("A", Type = typeof(ChildA))] [XmlElement("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; }</code>
XmlArrayItem
Attributs : Placés sur la liste elle-même, ils définissent les types d'éléments que la liste peut contenir.
<code class="language-csharp"> [XmlArrayItem("A", Type = typeof(ChildA))] [XmlArrayItem("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; }</code>
En sélectionnant l'une de ces options et en décommentant le bloc de code correspondant dans l'exemple de code fourni, les développeurs peuvent réussir à sérialiser et désérialiser les objets contenant des classes dérivées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!