问题xml反序列化递归嵌套对象
问题描述:
解决:下面的代码不会导致无限循环,因为我认为。该循环在调用反序列化的代码中。这个贴的代码只是正常问题xml反序列化递归嵌套对象
我试图序列化和反序列化到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;
}
任何人都知道我做错了吗?
答
林不知道,如果它的相关的问题,但作为反序列化方法是静态的你不应该叫...
var msgColl = MessageObjectCollection.Deserialize(xml);
的,而不是...
var msgColl = new MessageObjectCollection().Deserialize(xml);
?
是的,你的权利当然。但这不是问题。这段代码工作得很好,无限循环发生在这段代码中,但是在调用反序列化的代码中上游...... – 2010-07-28 12:57:12
好吧,很高兴你知道了。 – barrylloyd 2010-07-28 13:16:15