public ExceptionActivityBinder <TInstance, TException> IfElse(StateMachineExceptionCondition <TInstance, TException> condition,
                                                                      Func <ExceptionActivityBinder <TInstance, TException>, ExceptionActivityBinder <TInstance, TException> > thenActivityCallback,
                                                                      Func <ExceptionActivityBinder <TInstance, TException>, ExceptionActivityBinder <TInstance, TException> > elseActivityCallback)
        {
            var thenBinder = GetBinder(thenActivityCallback);
            var elseBinder = GetBinder(elseActivityCallback);

            var conditionBinder = new ConditionalExceptionActivityBinder <TInstance, TException>(_event, condition, thenBinder, elseBinder);

            return(new CatchExceptionActivityBinder <TInstance, TException>(_machine, _event, _activities, conditionBinder));
        }
 public ExceptionActivityBinder <TInstance, TException> If(
     StateMachineExceptionCondition <TInstance, TException> condition,
     Func <ExceptionActivityBinder <TInstance, TException>, ExceptionActivityBinder <TInstance, TException> > activityCallback)
 {
     return(IfElse(condition, activityCallback, _ => _));
 }
 public ConditionalExceptionActivityBinder(Event @event, StateMachineExceptionCondition <TInstance, TException> condition,
                                           EventActivities <TInstance> thenActivities, EventActivities <TInstance> elseActivities)
     : this(@event, context => Task.FromResult(condition(context)), thenActivities, elseActivities)
 {
 }