如何将MemorySteam设置为当前对象

本文关键字:对象 设置 MemorySteam | 更新日期: 2023-09-27 18:14:09

我正在编写一个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> ',因为它是只读的

如何将MemorySteam设置为当前对象

您不能重新分配this,它是当前实例。你可以让你的方法返回一个副本。你可以用那份拷贝做任何你想做的事。我认为它应该看起来更像:

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