C# 如何将MemorySteam设置为当前对象?
我正在编写一个C#应用程序,对如何将C# 如何将MemorySteam设置为当前对象?,c#,memorystream,C#,Memorystream,我正在编写一个C#应用程序,对如何将MemoryStream设置为当前对象有疑问 我想对一个对象进行一个函数调用,它复制对象的数据而不返回对象,并选择使用序列化 下面是我要复制的对象中的函数: public void CopyTest() { MemoryStream stream = SerializeService.SerializeToStream(this); this = SerializeService.DeserializeFromStream(stream); }
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;
}
以下是我得到的错误:
无法分配给“
”,因为它是只读的
您不能重新分配此,它是当前实例。您可以使您的方法返回一个副本。你可以用它做任何你想做的事。 我认为它需要看起来更像:
public bool CopyTest()
{
return this == Copy();
}
public object Copy()
{
return SerializeService.DeserializeFromStream(SerializeService.SerializeToStream(this));
}
CopyTest
应返回一个对象
。无法分配“this”,因为它仅获取当前实例<代码>返回SerializeService.DeserializeFromStream(流)代码>您真正想要实现的目标是什么?您当然不能为类重新分配此
,但我们没有您尝试这样做的背景。我已经编辑了我的问题。要返回对象的类型,而不是“对象”,除了使用泛型,如何实现此目的?据我所知,您不能。