La serialización de una clase a XML usando RestSharp.Addbody falla
-
26-10-2019 - |
Pregunta
Intento agregar una clase de prueba simple a un RestSharp-RestRequest
mediante el RestRequest.AddBody
-Método. Traté de serializar el uso de los dos serializadores entregados, pero no pude hacer que uno de ellos funcionara (JSON-Serializations funciona bastante bien con la misma configuración ...)
Así es como hago la serialización:
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 clase ficticia que estoy usando es:
private class Dummy
{
public string A = "Some string";
public string B = "Some string";
}
Usando
RestSharp.Serializers.XmlSerializer()
Yo obtengo: "<Dummy />
"(Falta de ambas cuerdas)Usando
RestSharp.Serializers.DotNetXmlSerializer()
No tengo nada, la programación no superó el paso de serialización.Usando JSON
request.RequestFormat = DataFormat.Json;
, todo funciona bien.
.
{
"A": "Some string",
"B": "Some string"
}
¿Cómo obtengo la clase para serializar adecuadamente a XML?
¡Gracias por tu ayuda!
Solución
Esos son campos, no propiedades. El XMLSerializer subyacente solo busca propiedades públicas. Actualizarlo en esto y debería funcionar:
class Dummy
{
public string A { get; set; };
public string B { get; set; };
public Dummy() {
A = "Some string";
B = "Some string";
}
}
La razón por la que el JSON One funciona es porque defiende el serializador predeterminado de JSON.NET que (aparentemente) admite los campos. Creo que esta es la decisión de diseño incorrecta personalmente.