已解决:下面的代码并没有像我想的那样导致无限循环。循环在调用反序列化的代码中。这个发布的代码工作得很好
我正在尝试将以下对象序列化和反序列化为 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;
}
有人知道我在做什么错吗?