如何将MemorySteam设置为当前对象?

时间:2015-09-23 06:12:37

标签: c# memorystream

我正在编写C#应用程序,并对如何将MemoryStream设置为当前对象提出疑问。

我想要一个对象的函数调用,它复制对象的数据而不返回对象,并选择使用序列化。

这是我要复制的对象中的函数:

public void CopyTest()
{
    MemoryStream stream = SerializeService.SerializeToStream(this);
    this = SerializeService.DeserializeFromStream(stream);
}

这是我的SerializeToStream功能:

public static MemoryStream SerializeToStream(object o)
{
    MemoryStream stream = new MemoryStream();
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, o);
    return stream;
}

以下是我收到的错误:

  

无法分配给“<this>”,因为它是只读的

1 个答案:

答案 0 :(得分:2)

您无法重新分配this,它是当前的实例。您可以使方法返回副本。你可以用这个副本做任何你想做的事。 我认为它需要看起来更像:

public bool CopyTest()
{
   return this == Copy();
}

public object Copy() 
{
   return SerializeService.DeserializeFromStream(SerializeService.SerializeToStream(this));
}