У меня есть список объектов, скажем List<Bar> barlist
. Эти Bar
orbjects довольно сложны, и я был бы счастлив продолжить без глубокого копирования.Нужна ли мне глубокая копия?
Однако я хотел бы разрешить пользователю изменять их, используя BindingSource
, BindingNavigator
и DataGridView
. Однако, если я установил DataSource
в свой список и изменил значения, BindingSource
изменяет мой список (поскольку он, по-видимому, не имеет собственного списка или использует только мелкие копии).
Проблема с этим: что, если пользователь хочет отказаться от своих изменений? Я должен был бы вернуть их вручную или не применять их к исходному списку, если я дам BindingSource
список с глубоким копированием. Однако я бы хотел избежать глубокого копирования.
Есть ли альтернативный путь? Или у меня нет выбора, кроме как пометить объекты как Serializable
и скопировать их?
я не достаточно ясно на вашей проблеме, чтобы опубликовать реальный ответ, но вы рассмотрели один- . Если это не сработает, я бы посмотрел на валютных менеджеров. Я не думаю, что это поможет. Вы, скорее всего, застряли, делая глубокую копию. –
@PhillipScottGivens односторонняя привязка звучит интересно. Я предполагаю, что это помешает bindSource изменить мои данные. Однако я не думаю, что WinForms разрешает это (поскольку вы МОЖЕТЕ модифицировать данные, однако я не хочу применять эти изменения напрямую). Кажется, что все ведет к использованию глубокой копии. – CBenni
@Kiquenet Я просто использовал глубокую копию. Я отправлю код в качестве ответа. (Я не беру кредит на код, это, по сути, код, который был опубликован на SO некоторое время назад. Кроме того, он работает только для сериализуемых объектов) – CBenni