/// <summary> /// Resolves next state. /// </summary> /// <returns>Concrete instance of <see cref="MailingState"/>.</returns> /// <exception cref="Exception">Can't resolve more states</exception> public virtual MailingState Resolve() { if (!CanResolve()) { throw new Exception("Can't resolve more states"); } var stateType = _lastState == null ? _initialStates[_bulkEmail.GetTypedColumnValue <Guid>("StatusId")] : _currentStateSequence[_lastState.GetType()]; _lastState = (MailingState)Activator.CreateInstance(stateType); return(_lastState); }
/// <summary> /// Changes the state of context. /// </summary> /// <param name="state">The state.</param> public void ChangeState(MailingState state) { _state = state; _state.SetContext(this); _state.Initialize(); }