Tôi muốn nối tiếp các đối tượng thành chuỗi và quay lại.
Chúng tôi sử dụng protobuf-net để biến một đối tượng thành Luồng và quay lại, thành công.
Tuy nhiên, Stream thành chuỗi và trở lại ... không thành công. Sau khi đi qua StreamToString
và StringToStream
, cái mới Stream
không được khử lưu huỳnh bởi protobuf-net; nó đưa ra một Arithmetic Operation resulted in an Overflow
ngoại lệ Nếu chúng ta khử lưu lượng gốc, nó hoạt động.
Phương pháp của chúng tôi:
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);
}
Mã ví dụ của chúng tôi sử dụng hai:
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);