質問

簡単なテストクラスをaに追加しようとします RestSharp-RestRequest 経由 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() 私は得ます: "<Dummy />「(両方の文字列がありません)

  2. 使用 RestSharp.Serializers.DotNetXmlSerializer() 私は何も得られません、プログラムはちょうどシリアル化ステップを乗り越えません。

  3. JSONを使用します request.RequestFormat = DataFormat.Json;, 、すべてが正常に機能します。

.

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

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

役に立ちましたか?

解決

これらはプロパティではなくフィールドです。基礎となるXmlSerializerは、公共のプロパティのみを探します。これに更新すると、動作するはずです。

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

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

JSON Oneが機能する理由は、(明らかに)フィールドをサポートするJSON.NETのデフォルトシリアイザーを定ルするためです。これは個人的に間違ったデザインの決定だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top