XmlSerializer und NULL-Attribute
Habe ich eine Klasse mit zahlreichen Nullable<T> Eigenschaften, die ich will, um serialisierbar zu XML als Attribute. Dies ist offensichtlich ein no-no, wie Sie als "komplexe Typen". Anstatt also implementiere ich die *Angegebene Muster, wo ich erstellen Sie eine neben * - Wert und der *Angegebenen-Eigenschaft wie folgt:
[XmlIgnore] public int? Alter { get { return this.Alter; } set { dies.Alter = Wert; } } [XmlAttribute("Alter")] public int AgeValue { get { return this.Alter.Wert; } set { dies.Alter = Wert; } } [XmlIgnore] public bool AgeValueSpecified { get { return this.Alter.HasValue; } }
Welche gut funktioniert - wenn die 'Alter' - Eigenschaft einen Wert hat, ist es serialisiert als ein Attribut. Wenn es nicht einen Wert haben, ist es nicht serialisiert.
Das problem ist, dass, wie ich bereits erwähnte, eine Menge der null-s in meiner Klasse und das Muster ist nur die Dinge chaotisch und unüberschaubar.
Ich hoffe, dass es ist ein Weg, um null-Werte zulässt mehr XmlSerializer freundlich. Oder, in Ermangelung, einen Weg, um erstellen Sie eine null-Ersatz ist.
Hat jemand irgendwelche Ideen, wie ich dies tun könnte?
Dank.
InformationsquelleAutor der Frage Barg | 2010-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umsetzung der
IXmlSerializable
interface in Ihrer Klasse. Sie können dann mit speziellen Fällen, wie nullables in derReadXML
undWriteXML
Methoden. Es gibt ein gutes Beispiel in der MSDN-Dokumentation Seite..InformationsquelleAutor der Antwort blachniet
Ich hatte ein ähnliches problem mit dem code, an dem ich arbeitete, und ich beschloss nur, um einen string für die Eigenschaft war ich zu serialisieren und zu Deserialisieren. Ich landete mit etwas wie dieses:
InformationsquelleAutor der Antwort Curt