2012-02-16 53 views
1

我試圖通過RestRequest.AddBody-Method增加一個簡單的測試類到RestSharp-RestRequest。我試圖序列化使用兩個交付序列化器,但我不能讓其中一個工作(JSON序列化工作相當不錯,只有相同的設置...)使用RestSharp.AddBody將類序列化爲xml失敗

這是我如何做序列化:

private void SerializationTest() 
{ 
    RestRequest request = new RestRequest(); 

    request.XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer(); 
    //request.XmlSerializer = new RestSharp.Serializers.XmlSerializer(); 

    request.RequestFormat = DataFormat.Xml; 
    //request.RequestFormat = DataFormat.Json; 
    request.AddBody(new Dummy()); // uses JsonSerializer 

    label1.Text = request.Parameters[0].Value.ToString(); 
} 

我使用的僞類是:

private class Dummy 
{ 
    public string A = "Some string"; 
    public string B = "Some string"; 
} 
  1. 使用RestSharp.Serializers.XmlSerializer()我得到: 「<Dummy />」(缺少兩個字符串)

  2. 使用RestSharp.Serializers.DotNetXmlSerializer()我什麼也沒得到,程序只是沒有完成序列化步驟。

  3. 使用JSON request.RequestFormat = DataFormat.Json;,一切工作正常。

{ 
    "A": "Some string", 
    "B": "Some string" 
} 

我該如何獲得這樣的類,以便序列化到XML?
感謝您的幫助!

回答

1

這些是字段,而不是屬性。底層的XmlSerializer只查找公共屬性。它更新到這一點,它應該工作:

class Dummy 
{ 
    public string A { get; set; }; 
    public string B { get; set; }; 

    public Dummy() { 
     A = "Some string"; 
     B = "Some string"; 
    } 
} 

的JSON一個成功運作的原因是因爲它推遲到(顯然)支持領域JSON.NET的默認的序列。我認爲這是個人錯誤的設計決定。

+0

謝謝。有用! – DIF 2012-02-17 07:47:10