Restsharp.AddBodyを使用してXMLにクラスをシリアル化するには失敗します
-
26-10-2019 - |
質問
簡単なテストクラスを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";
}
使用
RestSharp.Serializers.XmlSerializer()
私は得ます: "<Dummy />
「(両方の文字列がありません)使用
RestSharp.Serializers.DotNetXmlSerializer()
私は何も得られません、プログラムはちょうどシリアル化ステップを乗り越えません。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のデフォルトシリアイザーを定ルするためです。これは個人的に間違ったデザインの決定だと思います。
所属していません StackOverflow