private static IStateMachineBuilderWithoutStateId <Context, StateId, IStatefulTaskWithRollback <Context, StateId> > FillExecutorWithRollback( IStatefulTaskWithRollback <Context, StateId> initialTask) { return(initialTask.AsInitial(StateId.Initial) .On(StateId.StateA).GoTo(new TaskAWithRollback()) .On(StateId.StateB).GoTo(new TaskBWithRollback()) .On(StateId.StateC).GoTo(new TaskCWithRollback()) .OnFinalGoToSelfLoop(StateId.Final)); }
// To simplify call (no need in generic arguments). public static IStateMachineBuilderWithoutStateId <TContext, TStateId, IStatefulTaskWithRollback <TContext, TStateId> > AsInitial <TContext, TStateId>( this IStatefulTaskWithRollback <TContext, TStateId> initialTask, TStateId initialStateId) { return(initialTask.AsInitial <TContext, TStateId, IStatefulTaskWithRollback <TContext, TStateId> >(initialStateId)); }