Serialisierung einer Klasse zu XML mit rastsharp.addbody schlägt fehl
-
26-10-2019 - |
Frage
Ich versuche, a eine einfache Testklasse hinzuzufügen RestSharp-RestRequest
über die RestRequest.AddBody
-Methode. Ich habe versucht, mit beiden gelieferten Serialisierern zu serialisieren, aber ich konnte keinen von ihnen zum Laufen bringen (JSON-Serialisierungen funktionieren mit den gleichen Einstellungen ziemlich gut ...)
So mache ich die Serialisierung:
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();
}
Die Dummy-Klasse, die ich benutze, ist:
private class Dummy
{
public string A = "Some string";
public string B = "Some string";
}
Verwendung
RestSharp.Serializers.XmlSerializer()
Ich bekomme: "<Dummy />
"(Fehlende beide Saiten)Verwendung
RestSharp.Serializers.DotNetXmlSerializer()
Ich bekomme nichts, das Programm bin einfach nicht über den Serialisierungsschritt hinweg.Mit JSON
request.RequestFormat = DataFormat.Json;
, alles funktioniert gut.
.
{
"A": "Some string",
"B": "Some string"
}
Wie bekomme ich die Klasse so serialisieren, um XML zu serialisieren?
Danke für Ihre Hilfe!
Lösung
Das sind Felder, keine Eigenschaften. Der zugrunde liegende XMLSerializer sucht nur nach öffentlichen Eigenschaften. Aktualisieren Sie es darauf und es sollte funktionieren:
class Dummy
{
public string A { get; set; };
public string B { get; set; };
public Dummy() {
A = "Some string";
B = "Some string";
}
}
Der Grund, warum der JSON One funktioniert, liegt darin, dass er auf JSON.NETs Standard -Serializer wird, das (anscheinend) Felder unterstützt. Ich denke, das ist die falsche Designentscheidung persönlich.