public TState DoNext(IStateTransformer <TState> transformer) { lock (_locker) { if (transformer == null) { throw new ArgumentNullException(nameof(transformer)); } PropertyChanging?.Invoke(this, new PropertyChangingEventArgs(nameof(State))); transformer.Transform(State); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(State))); return(State); } }
protected AppStrategy(IStateTransformer <TState> transformer, IStateMachine <TState, IStateTransformer <TState> > stateMachine) { Transformer = transformer; StateMachine = stateMachine; }