xsd.exe aracılığındaki bir dizi sınıf yapıyorum ve bunları serileştirmeye çalışıyorum. Ancak, ortaya çıkan XML'de bir özellik bulunmuyor. İşte problemin bulunduğu şemanın bir parçası.XML İsteğe bağlı özniteliklerin varsayılan değerlerinin seri hale getirilmesi
<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 bir "Widget" sınıfı ve "VersionSpecified" adlı başka mülkiyet "Sürüm" adlı bir özellik oluşturulan, ama gerçek ayarlandığında bu ben bile serialize özniteliği oluşturmak için görünmez:
[XmlAttributeAttribute]
[DefaultValueAttribute(Version.Version_1_1)]
public Version Version { get; set; }
[Serialization.XmlIgnoreAttribute]
public bool VersionSpecified { get; set; }
Ve bu dayandığı saymaktır:
/// <remarks/>
[GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[Serializable]
public enum Version
{
[XmlEnumAttribute("1.0")]
Version_1_0,
[XmlEnumAttribute("1.1")]
Version_1_1,
}
Kod pasajı talebin uygun olarak
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);
Serileştirmenin neden özniteliği sunmayı reddettiği konusunda herhangi bir fikri var mı?
İyi yakalama. Onu özledim. –
İsteğe bağlı bir özniteliği varsayılan bir değere serileştirmek için zorlamak için herhangi bir yol var mıdır, buradaki örnekte olduğu gibi, seri hale getirilmeden önce değerin açıkça kodda ayarlandığı yer var mı? – Zack