В моем приложении я храню все данные в статическом списке AllData, он унаследован от;
public class GenericList<T> : BindingList<T>, IList<T>
Я установил изменения пользователя в выбранный элемент AllData, и моя проблема заключается в отмене изменений. Если пользователь отменяет изменения, я снова извлекаю все данные из базы данных. Это бесполезное решение; требуется время, создается новое соединение с базой данных и т. д.
Думаю, что до изменений у меня уже есть старые ценности. Я могу сделать резервную копию первых значений, и, если пользователь отменяет изменения, восстановить резервные копии значений. Проблема здесь; Я попытался клонировать выбранный элемент AllData через класс ObjectCopier
public static T Clone<T>(T source)
, и получил ошибку вроде
Тип «Класс XYZ» не помечен как сериализуемый.
Да, у меня есть несколько сериализованных классов, а другие не сериализованы. Выбранный элемент AllData, который я пытаюсь клонировать, содержит все типы данных, которые я создал.
Должен ли я разделить все классы? Если да; может ли это вызвать какие-либо проблемы (безопасность, производительность и т. д.)? или есть какой-нибудь полезный способ отмены операции?
undo
функция, взгляните на структуру CSLA Rockford Lhotka. - person Robert Harvey   schedule 28.05.2013