0
해결 : 아래 코드는 내가 생각한 것처럼 무한 루프를 일으키지 않습니다. 루프가 코드에서 직렬화를 호출했습니다. 이 게시 코드는 내가 직렬화하고 내가의 인스턴스가있는 경우문제 재귀 중첩 객체 xml-deserializing
가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;
}
처럼 보이는 다음 개체를 XML로 직렬화하기 위해 노력하고
잘 작동합니다 다음과 같은 메시지 객체 컬렉션 :
var msgColl = new MessageObjectCollection
{
new MessageObject
{
Title = "Hello",
Responses = new MessageObjectCollection
{
new MessageObject
{
Title = "hi",
Responses = null
}
}
}
}
나는 이것을 호출하여 그냥 괜찮게 serialize 할 수있다. 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;
}
누구든지 내가 잘못 알아?
예, 물론입니다. 그래도 문제는 아니 었습니다. 이 코드는 잘 작동하지만 무한 루프는이 코드에서 발생하지 않고 코드의 업스트림에서는 deserialization을 호출합니다. –
Ok, 다행입니다. – barrylloyd