オブジェクトを文字列にシリアル化したい。
protobuf-netを使用して、オブジェクトをストリームに変換し、正常に戻します。
ただし、文字列にストリーミングして戻る...それほど成功していません。StreamToString
およびを通過したStringToStream
後、新しいものStream
はprotobuf-netによってデシリアライズされません。Arithmetic Operation resulted in an Overflow
例外が発生します。元のストリームを逆シリアル化する場合、それは機能します。
私たちの方法:
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);
}
これら2つを使用したコード例:
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);