Как я могу установить 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));
}
Другие вопросы по тегам