Mögliches Duplikat:
Wie serialisiere ich eine IList<T>?
Ich möchte eine Klasse serialisieren (nennen wir sie S
), die eine Eigenschaft vom Typ IList<T>
donde T
ist eine weitere Klasse, die ich definiert habe. Ich erhalte eine Ausnahme, wenn ich versuche, eine Instanz der Klasse zu serialisieren S
zu XML. Dies ist verständlich, da die XmlSerializer
weiß nicht, welche konkrete Klasse er verwenden soll. Gibt es eine Möglichkeit, hoffentlich unter Verwendung von Attributen, um anzugeben, welche konkrete Klasse bei der Serialisierung/Deserialisierung einer Instanz instanziiert werden soll. Meine Implementierung der Klasse S
erzeugt eine Instanz der List<T>
Klasse. Hier ist etwas Code, um mein Beispiel zu illustrieren:
using System;
using System.Xml.Serialization;
using System.IO;
[Serializable]
public class T { }
[Serializable]
public class S
{
public IList<T> ListOfTs { get; set; }
public S()
{
ListOfTs = new List<T>();
}
}
public class Program
{
public void Main()
{
S s = new S();
s.ListOfTs.Add(new T());
s.ListOfTs.Add(new T());
XmlSerializer serializer = new XmlSerializer(typeof(S));
serializer.Serialize(new StringWriter(), s);
}
}
Ich hoffe, dass es ein Attribut gibt, das ich oberhalb der ListOfTs
Definition, die dem Serialisierungsprogramm sagt: "Nimm eine Instanz von List<T>
beim Serialisieren/Deserialisieren".