C# xml反序列化递归嵌套对象时出现问题
已解决:下面的代码并不像我想的那样导致无限循环。循环位于调用反序列化的代码中。这段代码很好用 我正在尝试将以下对象序列化并反序列化为xmlC# xml反序列化递归嵌套对象时出现问题,c#,xmlserializer,xml-deserialization,C#,Xmlserializer,Xml Deserialization,已解决:下面的代码并不像我想的那样导致无限循环。循环位于调用反序列化的代码中。这段代码很好用 我正在尝试将以下对象序列化并反序列化为xml public class MessageObjectCollection : List<MessageObject> { public string Serialize() { return XmlObjectSerializer.SerializeObject(this); } public s
public class MessageObjectCollection : List<MessageObject>
{
public string Serialize()
{
return XmlObjectSerializer.SerializeObject(this);
}
public static MessageObjectCollection DeSerialize(string serializedPriceHistory)
{
return XmlObjectSerializer.DeserializeObject<MessageObjectCollection>(serializedPriceHistory);
}
}
因此,如果我有一个messageobjectcollection实例,它看起来像:
var msgColl = new MessageObjectCollection
{
new MessageObject
{
Title = "Hello",
Responses = new MessageObjectCollection
{
new MessageObject
{
Title = "hi",
Responses = null
}
}
}
}
我可以通过调用
var xml=msgColl.Serialize
但是,当我试图通过调用
var msgColl=新MessageObjectCollection.Deserializexml
我在反序列化方法中遇到堆栈溢出异常:
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);
是的,当然是你的权利。但这不是问题所在。这段代码运行得很好,无限循环不是在这段代码中发生的,而是在调用反序列化的代码的上游发生的。。。。
var msgColl = new MessageObjectCollection().Deserialize(xml);