C# 将对象序列化为字符串

C# 将对象序列化为字符串,c#,string,serialization,stream,bytearray,C#,String,Serialization,Stream,Bytearray,我正在尝试序列化一个类,该类将被发送到服务器,服务器将在其中使用该对象。我正在使用Microsoft的异步客户机/服务器设置示例:我正在使用二进制格式化程序 为了测试这一点,我使用这个类: [Serializable] class Class1 { public int x = 10; public string banana = "banana"; } 并尝试使用以下内容对其进行序列化: Class1 example = new Class1(); IFormatter f

我正在尝试序列化一个类,该类将被发送到服务器,服务器将在其中使用该对象。我正在使用Microsoft的异步客户机/服务器设置示例:我正在使用二进制格式化程序

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

[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();
但这不起作用。我已尝试将流转换为字节[],如图所示,但在调试器中测试时,我不断收到一个
流不可读的异常。

尝试

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的位置以便能够读取(将其视为录音后回放的回放)