Die XML-Serialisierung der Klasse collection in c#
Ich habe eine Klasse, die eine Sammlung von Objekten. Die Objekte der Kollektion sind die Nachkommen der gleichen Klasse. Klasse A ist die Basis-Klasse und der Klasse B und die Klasse C erbt von Klasse A. B und C haben jeweils einige unterschiedliche Mitglieder. Die Kollektion ist eine Sammlung der Liste.
Ich würde gerne serialisieren der Klasse mit der Sammlung. Wie kann ich die attribute der verschiedenen Klassen werden in der Lage zu serialisieren und Deserialisieren der xml-Datei?
Dank,
Robert
- Fügen Sie einfach die
[Serializable]
- Attribut der Klasse. - [Serializable] ist nicht anwendbar auf die XML-Serialisierung anscheinend
- Meine Frage ist hauptsächlich mit der zwei polymorphen abgeleiteten Klassen.
- [Serializable] wird unterstützt sowohl durch die XmlSerializer-und die DataContractSerlizer. msdn.microsoft.com/en-us/library/... msdn.microsoft.com/en-us/library/... . Die Tatsache, dass die Klassen Erben von anderen Klassen nicht wirklich auf Ihre serialiability.
Du musst angemeldet sein, um einen Kommentar abzugeben.
[Serializable]
Attribut ist irrelevant in der XML-Serialisierung. Der XML serializer serialisiert die Eigenschaften mit public getter UND setter. Darüber hinaus müssen Sie sagen, um das XML-Serialisierungsprogramm die zusätzlichen Typen könnte es verwenden, jene, die nicht statisch bekannt, indem einType[]
zusätzliches argument, um dem serializer ctor oder hinzufügen[XmlInclude(typeof(B))]
und[XmlInclude(typeof(C))]
EDIT :
Folgenden code :
produziert, dass xml :
[XmlInclude(typeof(B))]
ist das, was ich Suche.Können Sie entweder XmlSerialization oder DataContract (oder eher "primitiv" - Umsetzung), siehe: http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/
Als für die Serialisierung: man braucht nur die Klassen markieren, die Sie serialisieren möchten, so müssen Sie markieren Klasse B und C, aber Sie sind nicht erforderlich, um die Markierung-Klasse A.
Ich würde jedoch empfehlen, Sie zu markieren, Eine Klasse als serialisierbar und damit machen Sie klar, dass Sie und andere Programmierer, die diese Klasse unterstützt die Serialisierung.
Brauchen Sie nicht, um Attribut-Klassen mit Xml-Serialisierung:
Verwendung einer collection, können Sie serialise es wie folgt: