Ich möchte Objekte in Zeichenfolgen und zurück serialisieren.
Wir verwenden protobuf-net, um ein Objekt erfolgreich in einen Stream und zurück zu verwandeln.
Stream zu String und zurück ... nicht so erfolgreich. Nach dem Durchlaufen von StreamToString
und StringToStream
wird das Neue Stream
nicht von protobuf-net deserialisiert. es wird eine Arithmetic Operation resulted in an Overflow
Ausnahme ausgelöst . Wenn wir den ursprünglichen Stream deserialisieren, funktioniert es.
Unsere Methoden:
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);
}
Unser Beispielcode mit diesen beiden:
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);