Die XML-Serialisierung der Standardwerte von optionalen Parametern

Habe ich eine Reihe von Klassen erstellen mit xsd.exe und ich bin versucht, serialise Sie. Jedoch, ein Attribut ist nicht enthalten in der resultierenden XML. Hier ist der Teil des Schemas, wo das problem liegt.

<xsd:element name="Widget">
    <xsd:complexType>
        /* sequence removed for brevity */
        <xsd:attribute name="Version" type="Version" use="optional" default="1.1"/>
    </xsd:complexType>
</xsd:element>
<xsd:simpleType name="Version">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="1.0"/>
        <xsd:enumeration value="1.1"/>
    </xsd:restriction>
</xsd:simpleType>

xsd.exe generiert eine Eigenschaft namens "Version" auf "Widget" - Klasse und eine weitere Eigenschaft namens "VersionSpecified", aber dieser nicht erscheinen, generieren Sie das Attribut an, wenn ich zu serialisieren, auch wenn auf true gesetzt:

[XmlAttributeAttribute]
[DefaultValueAttribute(Version.Version_1_1)]
public Version Version { get; set; }

[Serialization.XmlIgnoreAttribute]
public bool VersionSpecified { get; set; }

- Und dies ist die enumeration, auf denen es basiert:

///<remarks/>
[GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[Serializable]
public enum Version
{
    [XmlEnumAttribute("1.0")]
    Version_1_0,

    [XmlEnumAttribute("1.1")]
    Version_1_1,
}

Code-snippet wie pro Antrag

Widget widget = new Widget();
widget.Version = Version.Version_1_1;
widget.VersionSpecified = true;    

XmlSerializer serializer = new XmlSerializer(widget.GetType());
serializer.Serialize(/*Memory Stream object*/, widget);

Hat jemand irgendwelche Gedanken auf, warum die Serialisierung lehnt die Einführung der Attribut?

InformationsquelleAutor Jason | 2010-08-05
Schreibe einen Kommentar