将对象序列化为字符串

本文关键字:字符串 序列化 对象 | 更新日期: 2023-09-27 18:22:14

我正在尝试序列化一个类,该类将被发送到服务器,服务器将在其中使用该对象。我使用的是Microsoft的异步客户端/服务器设置示例:http://msdn.microsoft.com/en-us/library/bew39x2a.aspx我正在使用二进制格式化程序。

为了测试这一点,我使用了这个类:

[Serializable]
class Class1
{
    public int x = 10;
    public string banana = "banana";
}

并尝试用将其序列化

Class1 example = new Class1();
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
formatter.Serialize(stream, example);

为了将其发送到服务器,我需要发送一个字符串:

StreamReader reader = new StreamReader( stream );
string text = reader.ReadToEnd();
server.Send(text);
stream.Close();

但这行不通。我已经尝试将流转换为byte[],如图所示,但在调试器中测试时,我一直收到Stream was unreadable异常。

将对象序列化为字符串

尝试

Class1 example = new Class1();
IFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
   formatter.Serialize(ms, example);
   ms.Position = 0;
   StreamReader sr = new StreamReader(ms);
   String text = sr.ReadToEnd();
   server.Send(text);
}

我认为错过的部分是重置MemoryStream的位置,以便能够读取(可以将其视为录制后回放的倒带)