private static IStateMachine <TState, TTrigger> CreateDefault <TState, TTrigger>(TState initialState, Configuration <TState, TTrigger> config, bool blocking = false) { IStateMachine <TState, TTrigger> sm; if (blocking) { sm = new BlockingStateMachine <TState, TTrigger>(initialState, config); } else { sm = new GuardedStateMachine <TState, TTrigger>(initialState, config); } return(sm); }
public static IStateMachine <TState, TTrigger> Create <TState, TTrigger>(TState initialState, StateMachineConfiguration <TState, TTrigger> config, bool blocking = false) { Contract.Requires <ArgumentNullException>(initialState != null); Contract.Requires <ArgumentNullException>(config != null); IStateMachine <TState, TTrigger> sm; if (blocking) { sm = new BlockingStateMachine <TState, TTrigger>(initialState, config); } else { sm = new StateMachine <TState, TTrigger>(initialState, config); } sm.UnhandledTriggerExecuted += InvalidTriggerException <TTrigger, TState> .Throw; return(sm); }