2012-06-11 100 views
1

我有一個枚舉:XML序列化

[DataContract] 
public enum Relationship 
{ 
    Spouse = 4, 
    ResidesWith = 1, 
    Parent = 2, 
    Other = 3, 
    PersonalGuarantor = 5, 
    CoApplicant = 6 
} 

正如你所看到的,是沒有定義爲零。我圍繞這樣的想法構建了我的程序,即在枚舉中永遠不會定義零。這讓我看到哪些已經從各種組合框設置,哪些被設置爲空值。如果我將零值設置爲空值,則無法區分這兩種情況,而且我能夠做到這一點至關重要。

由於缺少默認狀態,我嘗試序列化值時出現錯誤。

有沒有辦法讓我的XML序列化跳過枚舉沒有價值,或避免這些錯誤的方法?我真的不想介紹一個默認值。

+0

你得到了什麼確切的錯誤?是否某些字段具有未命名的「關係」值? –

+0

對於類型關係的FamilyMemberRelationship或類似的東西,類似於'0'不是有效的選項。當我用Oded提出的默認值時,這一切都解決了。我能夠對我的程序進行一些小的修改,以防止它在其他地方搞亂。 –

回答

6

您需要使用0作爲枚舉值 - 使其成爲一個無效的值,並檢查(如您已經)。

[DataContract] 
public enum Relationship 
{ 
    Invalid = 0, 
    Spouse = 4, 
    ResidesWith = 1, 
    Parent = 2, 
    Other = 3, 
    PersonalGuarantor = 5, 
    CoApplicant = 6 
} 

不要忘了,枚舉是基於整數類型(其基礎類型),所以他們會總是有一個值(值類型不能爲null)和將默認爲0。使這明確也將使您的代碼庫中更清晰。

Protip:您也可以在枚舉中使用值。