Monitored Undo Framework (http://muf.codeplex.com) делает это, используя концепцию Пакета операций.Вы можете пометить набор операций как принадлежащих группе, чтобы система отмены отменяла / возвращала их как единицу работы.
Кроме того, библиотека позволяет оптимизировать ситуацию, сохраняя только первые / последние значения для данного поля.Таким образом, логика отмены / возврата не должна применять все 50 операций.Он может просто отменить, установив значение обратно к тому, что было до пакета отмены.
Предупреждение: Библиотека MUF не использует традиционный шаблон команды.Он использует больше шаблона памяти, отслеживая изменения после того, как они происходят в базовой модели домена.
Если вам нужно иметь истинный шаблон команды, то вы сможете добавить логику в реализацию отмены, которая будет проверятьзаписи в стеке отмены.Затем, например, если пользователь нажмет отмену в операции «+», стек начнет отмену и продолжит отмену, пока он продолжит находить операции «+» в стеке.Я использовал этот подход в тех случаях, когда я не мог пакетировать события, но хотел, чтобы стек отмены автоматически отменял более одной операции за раз.