2009-10-19 60 views
2

我有一個簡單的測試應用程序,從一個休息界面拉一個XML文檔。數據元素有幾個字符串字段和一些布爾字段。我創建了一個簡單的實體類,並在其上放置了一個DataContractAttribute,然後將DataMemberAttributes添加到每個數據成員。然後我使用HttpResponseMessage.Content.ReadAsDataContract()來解析響應。所有的字符串類型都很好,但是我所有的布爾類型都是false(並且它們不是真的)。 XML元素是一樣的東西:我如何獲得一個DataMemberAttribute使用布爾類型

<is-enabled type="boolean">true</is-enabled> 

,然後在我喜歡的類型I類有類似:

[DataMember(Name="is-enabled")] 
public bool isEnabled 
{ 
    get 
    { 
     return this.isEnabledField; 
    } 
    set 
    { 
     this.isEnabledField = value; 
    } 
    } 

如何獲得布爾值正確才能通過?

回答

0

它似乎應該工作,但...我會嘗試的第一件事是從數據成員名稱中刪除破折號「 - 」。 (de)序列化程序可能會在內部破折號而不映射到正確的成員,因此會給你默認的bool值false;

如果您覺得需要使複合變量名稱更易於閱讀,請嘗試使用下劃線。

+0

我無法更改它,那是我正在使用的服務中的成員名稱。 – MikeD 2009-10-20 03:37:16

1

不管您是否相信,DataContractSerializer對正在反序列化的XML文檔中元素的順序非常敏感。我敢打賭,您需要將DataMemberAttribute的Order屬性設置爲與其父元素的其他子元素中的「is-enabled」的實際位置相匹配。

相關問題