Serialisierung von Objecten die von List<> erben

GartenUmgraben

Erfahrenes Mitglied
Moin..

Ich habe ein Objekt "Person" (Name und Alter) und ein Objekt "PersonenListe" (Id) welches von List<Person> erbt.

Wenn ich nun die PersonenListe serialisieren will, speichert er mir die List<Person> auch korrekt ab, nur leider wird das zusätzliche Propertie "Id" nicht mit abgespeichert.

Alle Properies haben korrekte Getter und Setter usw. Gibt es da evtl. ein Problem, weil ich von List<Person> erbe?


Gruß

Gärtner


Code:
    [Serializable]
    public class PersonList : List<Person>
    {

        private string id;
        public string Id
        {
            get { return id; }
            set { id = value; }
        }

        public PersonList() { }
	
    }


Code:
    [Serializable]
    public class Person
    {

        private uint age;
        public uint Age
        {
            get { return age; }
            set { age = value; }
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Person(string name, uint age)
        {
            if (string.IsNullOrEmpty(name))
                throw new ArgumentException("name must neigther be null nor empty");

            this.name = name;
            this.age = age;
        }

        public Person() { }

    }


XML:

Code:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Person>
    <Age>25</Age>
    <Name>Hans</Name>
  </Person>
  <Person>
    <Age>43</Age>
    <Name>Inge</Name>
  </Person>
</ArrayOfPerson>
 
Es geht ja ums Prinzip. Das ist nur ein Beispiel. So hat dann jede gespeicherte Liste eine eine Id...ist ja auch egal.

Der Punkt ist, wenn ich von List<> erbe, scheinen zusätzliche Properties nicht mit serialisiert zu werden. Wenn ich statt des Erben, die Liste einfach als Propertie integriere, dann wird alles korrekt abgespeichert. Nur hab ich halt in anderen Projekt, Klassen die erben und es sollte auch dort funktionieren.
 
Dann kannst du schon mit einem Umbau beginnen. Dieses "Feature" wurde nicht implementiert. IList<T> implementiert das Interface IXmlSerializable nicht, was genau zu dem von dir angeführten Problem führt.
 
Zurück