(De)Serialisierung von Vererbung

N

NotAUser

Hallo zusammen,

mein Problem ist, dass ich so eine Struktur zu XML serialiseren will (und wieder zurück):

Code:
public class Container
{
     public ClassA[] Classes { get; set;}

}

public class ClassA
{
      [XmlAttribute(AttributeName = "a")]
      public int PropA { get; set; }
}

public class ClassB : ClassA
{
      [XmlAttribute(AttributeName = "b")]
      public string PropB { get; set; }
}

public class ClassC: ClassA
{
      [XmlAttribute(AttributeName = "b")]
      public boolean PropC { get; set; }

}

und zwar wenn es geht zu einer xml mit der Struktur:
Code:
<Container>
    <ClassB a=1 b="Hallo" />
    <ClassC a=2 c=false />
            ...
</Container>

Ich benutze den XmlSerialisierer
Code:
            using (var stream = File.OpenWrite(path))
            {
                var settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };

                using (var writer = XmlWriter.Create(stream, settings))
                {
                    var serializer = new XmlSerializer(typeof(Container));
                    if (writer != null)
                    {
                        serializer.Serialize(writer, container);
                    }
                }
            }

Allerdings bringt er folgende Exception mit der ich Null-bis-Gar-Nichts anfangen kann:
Code:
"Der Typ SimpleTester.ClassB wurde nicht erwartet. 
Verwenden Sie das XmlInclude- oder das SoapInclude-Attribut,
 um Typen anzugeben, die nicht statisch sind."
(KlassenNamen wurden abgeändert)

Ich bin für jede Hilfe dankbar!
Einen schönen Abend noch zusammen!
 
Also,

es hat zwar keiner geantwortet, aber vielleicht brauch ja jemand anderes auch die Lösung:

Code:
public class Container
{
        [XmlElement(Type = typeof(ClassC)), 
        XmlElement(Type = typeof(ClassB))]
        public ClassA[] Classes { get; set; }
}

Fast schon zu einfach... aber was ist nicht einfach, wenn man es weiß.
 
Zurück