Сериализация класса на XML с использованием RestSharp.AddDody выходит из строя

StackOverflow https://stackoverflow.com/questions/9314943

Вопрос

Я стараюсь добавить простой тестовый класс в 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";
}
  1. С использованием RestSharp.Serializers.XmlSerializer() Я получил: "<Dummy />"(отсутствует обе строки)

  2. С использованием RestSharp.Serializers.DotNetXmlSerializer() Я ничего не получаю, программа просто не преодолевает сериализацию.

  3. Использование 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 по умолчанию, который (по -видимому) поддерживает поля. Я думаю, что это неправильное решение о дизайне лично.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top