2010-08-12 79 views
1

我想使用XmlSerializer並將帶有空字符串值的屬性反序列化爲用於整數的零。我看到的有關使用空字符串反序列化屬性的每個問題都涉及將可爲空的整數設置爲空 - 但我想將不可爲空的整數設置爲零,而不是空值。XmlSerializer將帶空字符串的屬性反序列化爲零

有沒有簡單的方法來做到這一點,而不是實現IXmlSerializable,只是自己處理它?

回答

1

一種方法可以配置一個虛擬序列化屬性,並在實踐中使用不同的屬性:

private int myint; 

[XmlIgnore] 
public int MyInt { get; set; } 

[XmlElement("MyInt")] 
public string MyIntString 
{ 
    get { return this.MyInt.ToString(); } 
    set { this.MyInt = Convert.ToInt32(value ?? string.Empty); } 
} 
+0

感謝您的答覆。實際上,我已經嘗試了上面列出的第一種方法,但XmlSerializer拋出一個InvalidOperationException異常,並帶有消息「Can not serialize member'MYPROPERTY'of System.Nullable'1 [System.Int32]。XmlAttribute/XmlText不能用於編碼複雜類型。 「 我只能讓MYPROPERTY成爲一個字符串並創建一個試圖轉換爲int的方法 - 但我還沒有把它用到那麼遠,因爲我仍然抱着更簡單方法的希望。也許我在做別的事情呢? – 2010-08-12 13:17:37

+0

哦,你說得對。我已經習慣了WCF,它更容易處理這些類型。回到當天,我會做的是將一個虛擬屬性用作字符串,並將其解析爲我的不動產。我會相應地更新這篇文章。 – kbrimington 2010-08-12 13:21:25

+0

非常感謝!這看起來最乾淨的方法。太糟糕了沒有像[XmlAttributeAttribute(EmptyValue =「0」)] :) – 2010-08-12 13:27:29

相關問題