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";
}
  1. Verwendung RestSharp.Serializers.XmlSerializer() Ich bekomme: "<Dummy />"(Fehlende beide Saiten)

  2. Verwendung RestSharp.Serializers.DotNetXmlSerializer() Ich bekomme nichts, das Programm bin einfach nicht über den Serialisierungsschritt hinweg.

  3. 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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top