Использование DataContractSerializer для сериализации, но не может выполнить десериализацию обратно

У меня есть две следующие функции:

public static string Serialize(object obj)
{
    DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
    MemoryStream memoryStream = new MemoryStream();
    serializer.WriteObject(memoryStream, obj);
    return Encoding.UTF8.GetString(memoryStream.GetBuffer());
}

public static object Deserialize(string xml, Type toType)
{
    MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml));
   // memoryStream.Position = 0L;
    XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.UTF8, new XmlDictionaryReaderQuotas(), null);
    DataContractSerializer dataContractSerializer = new DataContractSerializer(toType);
    return dataContractSerializer.ReadObject(reader);
}

Первая, кажется, отлично сериализует объект в строку xml. XML выглядит действительным, без битых тегов, без пробелов в начале или в конце и т. Д. Теперь вторая функция не хочет десериализовать мою XML-строку обратно в объект. В последней строке я получаю:

Произошла ошибка десериализации объект типа [МОЙ ТИП ОБЪЕКТА ЗДЕСЬ]. Данные на корневом уровне недействительны. Строка 1, позиция 1.

Что я делаю не так? Я пробовал переписать функцию десериализации несколько раз, и это всегда похоже на одну и ту же ошибку. Спасибо!

О, и вот как я вызываю две функции:

SomeObject so = new SomeObject();
string temp = SerializationManager.Serialize(so);
so = (SomeObject)SerializationManager.Deserialize(temp, typeof(SomeObject));
63
задан Dimskiy 15 February 2011 в 22:20
поделиться