我正在编写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>
”,因为它是只读的
答案 0 :(得分:2)
您无法重新分配this
,它是当前的实例。您可以使方法返回副本。你可以用这个副本做任何你想做的事。
我认为它需要看起来更像:
public bool CopyTest()
{
return this == Copy();
}
public object Copy()
{
return SerializeService.DeserializeFromStream(SerializeService.SerializeToStream(this));
}