using System.Collections.Generic;
public static void Main()
StateHelper.ChangeState(State.FirstState, State.SecondState);
public static class StateHelper
public static void ChangeState(State currentState, State newState)
ThrowIfInvalidNewState(newState, [ State.SecondState ]);
ThrowIfInvalidNewState(newState, [ State.FirstState ]);
ThrowIfInvalidNewState(newState, [ ]);
public static void ThrowIfInvalidNewState(State newState, List<State> allowedNewStates)
if (!allowedNewStates.Contains(newState))
throw new ArgumentException("Недопустимый переход");