protected void ChangeState(string newState) { // Call OnLeave for the old state. if (currentState != null) currentState.OnLeave(newState); // Instantiate and set the new state. Assembly a = Assembly.GetExecutingAssembly(); Type t = a.GetType(newState); currentState = Activator.CreateInstance(t) as State; // Set up the new state. currentState._P = propertyBag; currentState._SM = this; currentState.OnEnter(currentStateType); currentStateType = newState; needToRenderOnEnter = true; }