2010-10-08 399 views
5

我想將一個Xml文檔反序列化爲一個C#類。 Xml看起來像這樣:如何用xml自定義true和false值來設置布爾值?

<response> 
    <result>Success</result> 
</response> 

該結果可能只有「成功」或「失敗」。當我反序列化它時,我想把值設爲「成功」= true和「失敗」= false的布爾值。我不知道如何設置true和valse常量?我目前的代碼看起來像這樣。

[XmlRoot(ElementName="response")] 
public class Response() 
{ 
    [XmlElement(ElementName="result")] 
    public bool Result { get; set; } 
} 

回答

4

定義是隱藏的另一個屬性,它確實翻譯爲您提供:

[XmlRoot(ElementName="response")] 
public class Response() 
{ 
    [XmlElement(ElementName="result")] 
    private string ResultInternal { get; set; } 

    [XmlIgnore()] 
    public bool Result{ 
    get{ 
     return this.ResultInternal == "Success"; 
    } 
    set{ 
     this.ResultInternal = value ? "Success" : "Failed"; 
    } 
    } 
} 
+0

我加入了XmlIgnore屬性的例子,因爲這是爲了防止兩個結果在XML中結束了,如果你searialize該類。 – 2010-10-08 12:56:26

+2

看來,這隻適用於ResultInternal是公共的。 – 2010-10-08 13:51:35

0

一種解決方案是有一個枚舉定義如下,並添加擴展方法:

enum SuccessBool 
{ 
    False = -1, 
    Failed = -2, 
    Failure = -3, 
    Unseccessful = -4,      
    True = 1, 
    Success = 2, 
    Successful = 3 
} 

static class SuccessBoolExtenson 
{ 
    public static bool ToBool(this SuccessBool success) 
    { 
     return (int)success > 0; 
    } 
} 

這將定義成功/失敗和所有是類型安全的多重定義幫助。

相關問題