J'ai les 2 fonctions:
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);
}
La première semble sérialiser un objet en chaîne de caractères xml bien. Le XML semble valide, pas cassé tags, pas de blanc espace au début ou à la fin, etc. Maintenant, la deuxième fonction ne veut pas désérialiser ma chaîne xml à l'objet. Sur la dernière ligne j'obtiens:
Il y avait une erreur de la désérialisation du l'objet de type [MON TYPE d'OBJET ICI]. Les données au niveau de la racine n'est pas valide. Ligne 1, position 1.
Ce que je fais mal? J'ai essayé de réécrire les Désérialiser fonction à quelques reprises, et il semble être toujours le même type d'erreur. Merci!!!!
Oh, et c'est de cette façon que je vais appeler la 2 fonctions:
SomeObject so = new SomeObject();
string temp = SerializationManager.Serialize(so);
so = (SomeObject)SerializationManager.Deserialize(temp, typeof(SomeObject));