/// <inheritdoc/> public virtual void TransitionTo(Func <IStateBuilderFactory, IStateBuilder> stateSetup) { //TODO: configure transition StateDefinition state = this.Pipeline.AddState(stateSetup); this.Outcome = new TransitionDefinition() { NextState = state.Name }; }
/// <inheritdoc/> public virtual ErrorHandlerDefinition Build() { StateOutcomeDefinition outcome = this.Outcome.Build(); switch (outcome) { case TransitionDefinition transition: this.ErrorHandler.Transition = transition; break; case EndDefinition end: this.ErrorHandler.End = end; break; default: throw new NotSupportedException($"the specified {nameof(StateOutcomeDefinition)} type '{outcome.GetType().Name}' is not supported"); } return(this.ErrorHandler); }
/// <inheritdoc/> public virtual new EventCaseDefinition Build() { StateOutcomeDefinition outcome = base.Build(); switch (outcome) { case EndDefinition end: this.Case.End = end; break; case TransitionDefinition transition: this.Case.Transition = transition; break; default: throw new NotSupportedException($"The specified outcome type '{outcome.GetType().Name}' is not supported"); } return(this.Case); }
/// <inheritdoc/> public virtual void End() { //TODO: configure end this.Outcome = new EndDefinition(); }