Я разрабатываю проект, в котором все основные компоненты совместно используют один общий DomainObject (да, я украл термин из мира O / RM, но это не совсем проект O / RM.) DomainObject поддерживает объекты меняют состояние (грязное / чистое) и позволяют себе откатываться или фиксироваться (AcceptChanges (), RejectChanges ()). Когда AcceptChanges () вызывается для объекта, он запускает событие, и это событие инициирует запись значений hte в базовое хранилище данных. Кроме того, он передает параметр, позволяющий отменять постоянство в событии.
1) Создание класса (DomainObject) и изменение его свойств.
2) Classroom.AcceptChanges () вызывается, вызывая OnAcceptEvent и передавая DomainObjectChangeEventArgs, которые содержат логическое свойство с именем Cancel
3) Если событие не отменено, изменения принимаются, и состояние классной комнаты обновляется.
4) Затем проект вызывает AcceptChanges для любых внутренних свойств, которые также являются объектами DomainObject, например Student.
5) Каждый студент запускает событие OnAcceptEvent, передавая DomainObjectChangeEventArgs ... и т. Д.
Теперь, спрашивая сообщество в целом:
A) Если бы у вас был индикатор отмены на AcceptEvent в классе, остановите весь процесс, вынуждая его больше не оценивать и, возможно, не принимайте учеников, или вы бы набрали код Cancel, чтобы просто применить его к классной комнате.
b) Можно ли ожидать, что индикатор «Отмена» на каком-либо Студенте остановит обработку на каких-либо дополнительных Студентах?
Моя первоначальная мысль состояла в том, что индикатор отмены на мероприятии в классе должен остановить весь процесс, поэтому допускается постепенное сохранение предварительно принятого состояния класса и всех учащихся без дополнительных затрат на транзакцию. Но я не обязательно убежден, что я прав.
Что бы вы сделали?