Решено: приведенный ниже код не вызывает бесконечный цикл, как я думал.цикл был в коде, вызывающем десериализацию.этот опубликованный код прекрасно работает
Я пытаюсь сериализовать и десериализовать в XML следующий объект
public class MessageObjectCollection : List<MessageObject>
{
public string Serialize()
{
return XmlObjectSerializer.SerializeObject(this);
}
public static MessageObjectCollection DeSerialize(string serializedPriceHistory)
{
return XmlObjectSerializer.DeserializeObject<MessageObjectCollection>(serializedPriceHistory);
}
}
Класс MessageObject выглядит следующим образом
public class MessageObject
{
public string Title;
public MessageObjectCollection Responses;
}
Так что, если у меня есть экземпляр объекта messageobjectcollection, который выглядит следующим образом:
var msgColl = new MessageObjectCollection
{
new MessageObject
{
Title = "Hello",
Responses = new MessageObjectCollection
{
new MessageObject
{
Title = "hi",
Responses = null
}
}
}
}
Я могу очень просто сериализовать это, вызвав var xml = msgColl.Serialize ();
Однако, когда я пытаюсьдесериализовать это, вызвав var msgColl = new MessageObjectCollection (). Deserialize (xml);
Я получаю исключение переполнения стека в методе десериализации:
public static T DeserializeObject<T>(string xml)
{
T result;
var ser = new XmlSerializer(typeof(T));
var buffer = StringToUTF8ByteArray(xml);
using (var stream = new MemoryStream(buffer, 0, buffer.Length))
{
result = (T) ser.Deserialize(stream);
}
return result;
}
Кто-нибудь знает, что я делаюнеправильно?