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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 protected Projector(IStateFactory stateFactory)
 {
     StateModel = stateFactory.CreateState <TState>();
 }
Beispiel #4
0
 internal State <TState, TEvent> CreateState(State <TState, TEvent>?parentState) => _stateFactory.CreateState(this, parentState);