Сериализация класса на XML с использованием RestSharp.AddDody выходит из строя
-
26-10-2019 - |
Вопрос
Я стараюсь добавить простой тестовый класс в RestSharp-RestRequest
через RestRequest.AddBody
-Метод. Я попытался сериализовать, используя оба доставленных сериалеров, но я не мог заставить одного из них работать (JSON-Serializations работает довольно хорошо с теми же настройками ...)
Вот как я делаю сериализацию:
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();
}
Манекен-класс, который я использую:
private class Dummy
{
public string A = "Some string";
public string B = "Some string";
}
С использованием
RestSharp.Serializers.XmlSerializer()
Я получил: "<Dummy />
"(отсутствует обе строки)С использованием
RestSharp.Serializers.DotNetXmlSerializer()
Я ничего не получаю, программа просто не преодолевает сериализацию.Использование JSON
request.RequestFormat = DataFormat.Json;
, все работает нормально.
.
{
"A": "Some string",
"B": "Some string"
}
Как мне получить класс так сериализовать для XML?
Спасибо за вашу помощь!
Решение
Это поля, а не свойства. Основной XmlSerializer ищет только публичные свойства. Обновите это до этого, и это должно работать:
class Dummy
{
public string A { get; set; };
public string B { get; set; };
public Dummy() {
A = "Some string";
B = "Some string";
}
}
Причина, по которой JSON One работает, заключается в том, что он обращается к сериализатору JSON.NET по умолчанию, который (по -видимому) поддерживает поля. Я думаю, что это неправильное решение о дизайне лично.