2012-02-16 6 views
1

Я пытаюсь добавить простой тестовый класс в RestSharp-RestRequest через RestRequest.AddBody -Method. Я попытался сериализовать использование обоих поставляемых сериализаторов, но я не смог заставить их работать (JSON-Serialization работает очень хорошо с одними и теми же настройками ...)Сериализация класса в xml с помощью RestSharp.AddBody завершается с ошибкой

Вот как я делаю сериализацию:

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?
Спасибо за помощь!

ответ

1

Это поля, а не свойства. Основной XmlSerializer ищет только общедоступные свойства. Обновите его к этому, и он должен работать:

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

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

Причина JSON один работает, потому что это сдвинуто по умолчанию сериализатором Json.NET, который (судя по всему) поддерживает поля. Я думаю, что это неправильное дизайнерское решение лично.

+0

спасибо. Оно работает! – DIF