1

-MethodRestSharp-RestRequestを介して単純なテストクラスを a に追加しようとしています。RestRequest.AddBody提供された両方のシリアライザーを使用してシリアライズしようとしましたが、そのうちの 1 つを動作させることができませんでした (JSON-Serializations は同じ設定でかなりうまく動作します...)

これは私がシリアル化を行う方法です:

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()I get: " " の使用<Dummy />(両方の文字列が欠落している)

  2. RestSharp.Serializers.DotNetXmlSerializer()I get nothingを使用すると、プログラムはシリアライゼーション ステップを通過しません。

  3. JSON を使用するrequest.RequestFormat = DataFormat.Json;と、すべて正常に動作します。

.

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

クラスを取得してXMLに適切にシリアライズするにはどうすればよいですか?
ご協力いただきありがとうございます!

4

1 に答える 1

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 のデフォルトのシリアライザーに従うためです。これは個人的には間違った設計上の決定だと思います。

于 2012-02-16T21:25:07.553 に答える