/// <summary> /// 将会用作主要的函数来记录操作。 /// </summary> /// <param name="operations"></param> /// <param name="operationTime"></param> public void Record(OperationStack operations, DateTime operationTime) { if (operations != null) { Recording?.Invoke(operations, operationTime); UndoStack.Push(new Tuple <OperationStack, DateTime>(operations, operationTime)); Recorded?.Invoke(operations, operationTime); } }
/// <summary> /// 添加一个操作 /// </summary> /// <param name="operation">要添加的操作</param> public void Record(Operation operation) { if (operation != null && IsRecording) { var stack = new OperationStack(operation.PropertyName.ToString()); stack.Push(operation); var recordTime = DateTime.Now; Recording?.Invoke(stack, recordTime); UndoStack.Push(new Tuple <OperationStack, DateTime>(stack, recordTime)); RedoStack.Clear(); Recorded?.Invoke(stack, recordTime); } }