Serializzare una classe per XML utilizzando RestSharp.AddBody fallisce
-
26-10-2019 - |
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";
}
-
RestSharp.Serializers.XmlSerializer()
Utilizzando ottengo: "<Dummy />
" (manca entrambe le stringhe) -
Utilizzando
RestSharp.Serializers.DotNetXmlSerializer()
non ottengo niente, il programma appena dose non superare la serializzazione-step. -
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!
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.