public static TState LoadState(IStateFactory stateFactory, IEnumerable <object> eventsOrMessages = null) { var state = stateFactory.CreateState <TState>(); eventsOrMessages = eventsOrMessages ?? Array.Empty <object>(); foreach (var eventOrMessage in eventsOrMessages) { state = state.Apply(eventOrMessage).ExtractState <TState>() ?? state; } return(state); }
public void ChangeState(string stateId, object changeStateInfo = null) { if (_currentId == stateId) { return; } if (_currentState != null) { _currentState.Exit( ); } _currentState = _stateFactory.CreateState(stateId); _currentState.Init(this, changeStateInfo); }
protected Projector(IStateFactory stateFactory) { StateModel = stateFactory.CreateState <TState>(); }
internal State <TState, TEvent> CreateState(State <TState, TEvent>?parentState) => _stateFactory.CreateState(this, parentState);