Domanda

cerco di aggiungere un semplice test di classe ad un RestSharp-RestRequest tramite il RestRequest.AddBody-metodo. Ho provato a serializzare utilizzando entrambi i serializzatori consegnati, ma non ho potuto ottenere uno di loro al lavoro (JSON-serializzazioni funziona abbastanza bene con solo le stesse impostazioni ...)

Questo è il modo faccio la serializzazione:

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

Il manichino di classe che sto utilizzando è:

private class Dummy
{
    public string A = "Some string";
    public string B = "Some string";
}
  1. RestSharp.Serializers.XmlSerializer() Utilizzando ottengo: "<Dummy />" (manca entrambe le stringhe)

  2. Utilizzando RestSharp.Serializers.DotNetXmlSerializer() non ottengo niente, il programma appena dose non superare la serializzazione-step.

  3. Utilizzando JSON request.RequestFormat = DataFormat.Json;, tutto funziona bene.

.

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

Come faccio ad avere la classe in modo corretto di serializzare XML?
Grazie per il vostro aiuto!

È stato utile?

Soluzione

Questi sono i campi, non proprietà. Il XmlSerializer sottostante guarda solo per le proprietà pubbliche. Aggiornarlo a questo e dovrebbe funzionare:

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

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

La ragione per le opere JSON uno è perché rimette alla JSON.NET del serializzatore di default che (apparentemente) supporti campi. Penso che questa sia la decisione di progettazione sbagliata personalmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top