Quiero serializar objetos en cadenas y viceversa.
Utilizamos protobuf-net para convertir un objeto en Stream y viceversa, con éxito.
Sin embargo, Transmitir a cadena y viceversa ... no tan exitoso. Después de pasar StreamToString
y StringToStream
, lo nuevo Stream
no es deserializado por protobuf-net; plantea una Arithmetic Operation resulted in an Overflow
excepción. Si deserializamos la secuencia original, funciona.
Nuestros métodos:
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);
}
Nuestro código de ejemplo usando estos dos:
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);