C# xml反序列化递归嵌套对象时出现问题

C# xml反序列化递归嵌套对象时出现问题,c#,xmlserializer,xml-deserialization,C#,Xmlserializer,Xml Deserialization,已解决:下面的代码并不像我想的那样导致无限循环。循环位于调用反序列化的代码中。这段代码很好用 我正在尝试将以下对象序列化并反序列化为xml public class MessageObjectCollection : List<MessageObject> { public string Serialize() { return XmlObjectSerializer.SerializeObject(this); } public s

已解决:下面的代码并不像我想的那样导致无限循环。循环位于调用反序列化的代码中。这段代码很好用

我正在尝试将以下对象序列化并反序列化为xml

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);