public IOperation BindEvents(IOperation operation)
            {
                Debug.Assert(operation != null, ErrorMessages.NotNull);
                if (_prevEvents.Any())
                {
                    operation = operation.AddPreEvent(() =>
                    {
                        foreach (var e in _prevEvents)
                        {
                            e.Invoke();
                        }
                    });
                }

                if (_postEvents.Any())
                {
                    operation = operation.AddPostEvent(() =>
                    {
                        foreach (var e in _postEvents)
                        {
                            e.Invoke();
                        }
                    });
                }

                return(operation);
            }
 public IOperationBuilder PrevEvent(Action action)
 {
     Debug.Assert(action != null, ErrorMessages.NotNull);
     _operation = _operation.AddPreEvent(action);
     return(this);
 }