В моем приложении есть коллекция объектов данных, которые определяют, какие типы данных приложение собирает при выполнении.
Пользователь может открыть диалоговое окно для редактирования этих объектов, и это диалоговое окно содержит экземпляры DataGridView, связанные с коллекциями. Это означает, что любые изменения, внесенные пользователем, применяются немедленно, что нехорошо.
Другая проблема заключается в том, что в этом диалоговом окне есть кнопка «Отмена», позволяющая пользователю отменить все изменения, внесенные с момента открытия окна.
В настоящее время, когда окно открыто, я сериализую все объекты (мелкая копия не будет работать), и если пользователь нажимает кнопку Отмена, то я десериализую их, чтобы восстановить их. Проблема, с которой я сталкиваюсь, состоит в том, что это грязно. Он изменяет все ссылки, и некоторые из этих объектов также хранят историю данных, которая не сериализуется. Затем мне нужно, чтобы через приложение появлялись события, уведомляющие объекты об обновлении их ссылок и т. Д. Это боль.
Есть ли лучший подход к этой проблеме?