/// <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();
 }