Как я могу установить MemorySteam для текущего объекта?
Я пишу приложение на 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 ответ
Вы не можете переназначить this
это текущий экземпляр. Вы можете заставить свой метод возвращать копию. И вы можете делать с этой копией все, что захотите. Я думаю, что это должно выглядеть больше как:
public bool CopyTest()
{
return this == Copy();
}
public object Copy()
{
return SerializeService.DeserializeFromStream(SerializeService.SerializeToStream(this));
}