Question

J'essaie d'ajouter un simple test de classe à un RestSharp-RestRequest via le RestRequest.AddBody-Méthode. J'ai essayé de sérialisation utilisant à la fois des serializers livrés, mais je ne pouvais pas l'un d'eux au travail (JSON-sérialisations fonctionne très bien avec seulement les mêmes réglages ...)

Voici comment je fais la sérialisation:

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();
}

La classe mannequin J'utilise est:

private class Dummy
{
    public string A = "Some string";
    public string B = "Some string";
}
  1. Utilisation RestSharp.Serializers.XmlSerializer() je reçois: "<Dummy />" (les deux chaînes manquantes)

  2. Utilisation RestSharp.Serializers.DotNetXmlSerializer() Je ne reçois rien, le programm juste doesnt obtenir sur l'étape de sérialisation.

  3. Utilisation JSON request.RequestFormat = DataFormat.Json;, tout fonctionne très bien.

.

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

Comment puis-je obtenir la classe si serialize propre à XML?
Merci pour votre aide!

Était-ce utile?

La solution

Ce sont des champs, pas de propriétés. XmlSerializer sous-jacente ne recherche que les propriétés publiques. Mettre à jour à cela et il devrait fonctionner:

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

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

La raison pour laquelle on travaille JSON est parce qu'il remet au sérialiseur par défaut de JSON.NET qui (apparemment) champs de supports. Je pense que c'est la mauvaise décision de conception personnellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top