2012-04-26 75 views
0

我有以下類型的XSD定義:如何強制XML屬性的文字時,它等於在XSD默認(.NET C#)

<xs:complexType name="AttributeValue"> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
      <xs:attribute name="type" 
       type="ns:MyType" 
       default="Value"/> 

我想編寫一個C#對象通過帶有其中一個attributeValue類型的XmlSerializer通過XSD.exe創建。是否有可能強制串行器寫出type屬性,即使它等於默認值?

請注意,我不能修改XSD,我想避免修改通過XSD.exe生成的C#POCO,因爲這將在未來發生變化,我想避免維護開銷。

回答

1

這是通過設計。 Here是來自MS的回覆。建議的解決方法是註釋/刪除屬性字段的System.ComponentModel.DefaultValueAttribute。知識庫文章說,「微軟計劃在下一個主要版本的.NET Framework中改變這種行爲。」,但看起來他們沒有。

+0

我喜歡M $的支持參考。爲了防止有人有忍者答案,我不打算標記這個正確的。但我覺得我運氣不好。 – Spence 2012-04-26 11:23:42