/// <summary> /// Construct a transition. /// </summary> /// <param name="fromState"></param> /// <param name="toState"></param> /// <param name="triggeredBy"></param> /// <param name="isReentry"></param> /// <param name="guardCondition"></param> /// <returns></returns> public WorkflowTransition(WorkflowState <T, TContext> fromState, WorkflowState <T, TContext> toState, WorkflowTrigger <T> triggeredBy, bool isReentry = false, IWorkflowGuard <T, TContext> guardCondition = null) { FromState = fromState; ToState = toState; TriggeredBy = triggeredBy; IsReentry = isReentry; GuardCondition = guardCondition; }
/// <summary> /// Execute the IWorkflowGuard delegate. /// </summary> /// <param name="condition"></param> /// <returns></returns> private Func <bool> ConditionalGuard(IWorkflowGuard <T, TContext> condition) { return(() => condition.IsAllowed(this)); }