Hallo zusammen,
ich habe in einem Objekt, dass ich serialisiere eine Typisierte Liste. Diese Liste hat 2 Eigenschaften, die zwar beide einen unterschiedlichen Namen, jedoch beide auf die gleiche Liste zugreifen. Nun möchte ich die zweite Eigenschaft bei der Serialisierung ignorieren, jedoch nicht bei der Deserialisierung. Gibt es eine Möglichkeit das entsprechend einzuschränken?
Vielen Dank und Grüße
Marco
Ich bin leider nicht der XML-Profi, aber wir hatten ein ähnliches Problem bei der Serialisierung/Deserialisierung in einem Schulprojekt.
Das Ende vom Lied war, dass wir die Steuerung der Seriealisierung selbst in die Hand nehmen mussten.
Dazu muss deine zu serialisierende Klasse das Interface IXmlSerializable implementieren.
Das sind die drei Methoden GetSchema() [brauchste nicht], ReadXML(XmlReader) und WriteXML(XmlWriter)
Über die Methoden des XmlReader und XmlWriter kannst du genau programmieren, welche Daten deiner Klasse im Einzelnen serialisiert und deserialisiert werden sollen.
Deine Attribute wie [XmlIgnore] etc. benötigst du dann nicht, da du explizit sagts, was und wie serialisiert/deserialisiert werden soll.
BSP:
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteStartElement("this.FormularID");
writer.WriteString(this.FormID.ToString());
writer.WriteEndElement();
writer.WriteStartElement("this.FormularName");
writer.WriteString(this.FormularName);
writer.WriteEndElement();
writer.WriteStartElement("this.IstPersonalisiert");
writer.WriteString(this.IstPersonalisiert.ToString());
writer.WriteEndElement();
...
}
Deine Klasse kannst du dann ganz einfach dem XmlSerializer 'zu fressen' geben!
http://msdn.microsoft.com/de-de/library/system.xml.serialization.ixmlserializable(VS.80).aspx
~ There's no knowledge that is not power~