2008-09-22 109 views
2

可能重複:
How do I serialize an enum value as an int?你可以強制將一個枚舉值序列化爲一個整數嗎?

嗨,所有!

我想知道是否有辦法強制枚舉值序列化爲其整數值,而不是其字符串表示。

將您置於上下文中: 我們在一個嚴重依賴Web服務的Web應用程序中爲所有請求標頭使用單個基類,而與請求類型無關。

我想將一個Result字段添加到標題中,所以我們將有一個地方將提示傳遞迴調用應用程序,以瞭解在Web服務端如何進行操作。我們已經有一個枚舉被聲明爲這種效果,但由於我們有傳統的應用程序調用那些可能不知道那些枚舉的Web服務,我想發送這些值作爲整數序列化。

我們已經不得不通過使用[XmlElement(ElementName =「字符串representationOfAttributeName」)]來減少這些頭部的長度,因爲我們偶爾會超過IE最大url長度,我想知道是否有類似的屬性強制將枚舉值序列化爲整數。

有人聽說過這樣的屬性嗎?

一如以往,感謝您的幫助, 帕斯卡爾

回答

6

枚舉不序列化到整數。但是總體來說,如果你不喜歡你的屬性之一被序列化到XML的方式,你可以這樣做:

[XmlIgnore] 
public MyThing MyThing { get; set; } 

[XmlElement("MyThing")] 
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)] 
public string MyThingForSerialization 
{ 
    get { return //convert MyThing to string; } 
    set { MyThing = //convert string to MyThing; } 
} 
+0

注意`MyThingForSerialization`必須是上市。 XmlSerializer不會查看私有字段/屬性。 – Miral 2010-10-06 04:23:31

3

枚舉不要序列爲INT爲默認值。 我正在使用XMLSerializer來序列化一個類,並且具有與所述相同的問題。

(馬特豪厄爾斯的例子似乎工作,如果你改變MyThingForSerialization的範圍,以公開,但我希望看到一個更好的實現這一事業創造1個額外的公共財產)

相關問題