Heim > Backend-Entwicklung > C++ > Wie serialisiere ich abgeleitete Klassen in generischen Listen mit XmlSerializer?

Wie serialisiere ich abgeleitete Klassen in generischen Listen mit XmlSerializer?

Mary-Kate Olsen
Freigeben: 2025-01-11 09:27:43
Original
524 Leute haben es durchsucht

How to Serialize Derived Classes in Generic Lists with XmlSerializer?

Verwenden Sie XmlSerializer, um abgeleitete Klassen zu serialisieren

Bei der Verwendung von XmlSerializer für die XML-Serialisierung können beim Umgang mit Objekten, die von abstrakten Klassen abgeleitete generische Listen enthalten, Probleme auftreten. Versuche, solche Objekte zu deserialisieren, können zu einer InvalidOperationException führen.

Um dieses Problem zu beheben, können Sie eine der folgenden drei Methoden verwenden:

1. Verwenden Sie das Attribut [XmlInclude] für den Basistyp:

<code class="language-csharp">using System.Xml.Serialization;

[XmlInclude(typeof(ChildA))]
[XmlInclude(typeof(ChildB))]
public abstract class ChildClass
{
    public string ChildProp { get; set; }
}</code>
Nach dem Login kopieren

2. Verwenden Sie das Attribut [XmlElement] für das Attribut:

<code class="language-csharp">public class MyWrapper
{
    [XmlElement("A", Type = typeof(ChildA))]
    [XmlElement("B", Type = typeof(ChildB))]
    public List<ChildClass> Data { get; set; }
}</code>
Nach dem Login kopieren

3. Verwenden Sie das Attribut [XmlArrayItem] für das Attribut:

<code class="language-csharp">public class MyWrapper
{
    [XmlArrayItem("A", Type = typeof(ChildA))]
    [XmlArrayItem("B", Type = typeof(ChildB))]
    public List<ChildClass> Data { get; set; }
}</code>
Nach dem Login kopieren

Entkommentieren Sie die entsprechenden Attributpaare entsprechend Ihren spezifischen Anforderungen. Durch die Verwendung einer dieser Methoden kann XmlSerializer abgeleitete Klassen während der Serialisierung und Deserialisierung verarbeiten.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich abgeleitete Klassen in generischen Listen mit XmlSerializer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage