Je veux sérialiser des objets en chaînes et inversement.
Nous utilisons protobuf-net pour transformer un objet en Stream et inversement, avec succès.
Cependant, Stream to string et retour ... pas si réussi. Après avoir traversé StreamToStringet StringToStream, le nouveau Streamn'est pas désérialisé par protobuf-net; il soulève une Arithmetic Operation resulted in an Overflowexception. Si nous désérialisons le flux d'origine, cela fonctionne.
Nos méthodes:
public static string StreamToString(Stream stream)
{
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
public static Stream StringToStream(string src)
{
byte[] byteArray = Encoding.UTF8.GetBytes(src);
return new MemoryStream(byteArray);
}
Notre exemple de code utilisant ces deux:
MemoryStream stream = new MemoryStream();
Serializer.Serialize<SuperExample>(stream, test);
stream.Position = 0;
string strout = StreamToString(stream);
MemoryStream result = (MemoryStream)StringToStream(strout);
var other = Serializer.Deserialize<SuperExample>(result);