Voglio serializzare oggetti su stringhe e tornare indietro.Conversione di stream in stringa e ritorno ... cosa ci manca?
Utilizziamo protobuf-net per trasformare un oggetto in uno stream e tornare indietro, con successo.
Tuttavia, Streaming per stringa e ritorno ... non ha avuto molto successo. Dopo aver attraversato StreamToString
e StringToStream
, il nuovo Stream
non è deserializzato da protobuf-net; solleva un'eccezione Arithmetic Operation resulted in an Overflow
. Se deserializziamo il flusso originale, funziona.
nostri metodi:
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);
}
Il nostro codice di esempio utilizzando questi due:
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);
Modificato per chiarimenti, ty. – flipuhdelphia
non dovrebbe Stream essere MemoryStrea? – Ehsan