protected void UpdateState(State newState) { bool isPreviousStateSuccessfully = EndPreviusState(newState); if (!isPreviousStateSuccessfully) { string exMessage = string.Format("Can not make transition from CurrentState:{0} to NewState:{1}", CurrenState, newState); throw new System.InvalidOperationException(exMessage); } PreviousState = CurrenState; CurrenState = newState; CurrenState.Begin(); }