Rollback() protected abstract method

Rollback this event. This method is executed with Mementor.IsTrackingEnabled off, so no change marking will be done during its execution.

Because undo and redo are symmetric, this method might return a "reverse event" which will be used to rollback the effect of the current method. This method must now, however, return an isntance of BatchEvent.

protected abstract Rollback ( ) : BaseEvent
return BaseEvent
示例#1
0
 private void RollbackEvent(BaseEvent @event, bool undoing)
 {
     ExecuteNoTrack(() => {
         var reverse = @event.Rollback();
         if (reverse == null)
         {
             return;
         }
         if (reverse is BatchEvent)
         {
             if (!(@event is BatchEvent))
             {
                 throw new InvalidOperationException("Must not return BatchEvent in Rollback()");
             }
             reverse = ProcessBatch((BatchEvent)reverse);
             if (reverse == null)
             {
                 return;
             }
         }
         (undoing ? _redoStack : _undoStack).Push(reverse);
     });
 }
示例#2
0
 private void RollbackEvent(BaseEvent @event, bool undoing)
 {
     ExecuteNoTrack(() => {
         var reverse = @event.Rollback();
         if (reverse == null) return;
         if (reverse is BatchEvent)
         {
             if (!(@event is BatchEvent))
                 throw new InvalidOperationException("Must not return BatchEvent in Rollback()");
             reverse = ProcessBatch((BatchEvent) reverse);
             if (reverse == null) return;
         }
         (undoing ? _redoStack : _undoStack).Push(reverse);
     });
 }