Skip to content

Instantly share code, notes, and snippets.

@DannyRusnok
Created May 6, 2020 18:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DannyRusnok/e6dd1553f63c4ee3919c051235cb4e84 to your computer and use it in GitHub Desktop.
Save DannyRusnok/e6dd1553f63c4ee3919c051235cb4e84 to your computer and use it in GitHub Desktop.
State Pattern - Stateless sample
order = new StateMachine<OrderState, OrderActionTrigger>(OrderState.New);
order.Configure(OrderState.New)
.OnEntry(OrderDetail.Reset)
.Permit(OrderActionTrigger.Create, OrderState.Created)
.Ignore(OrderActionTrigger.Ship)
.Ignore(OrderActionTrigger.Cancel);
order.Configure(OrderState.Created)
.OnEntry(OrderDetail.Create)
.Permit(OrderActionTrigger.Cancel, OrderState.Cancelled)
.Permit(OrderActionTrigger.Ship, OrderState.Shipped)
.Ignore(OrderActionTrigger.Reset);
order.Configure(OrderState.Cancelled)
.OnEntry(OrderDetail.Cancel)
.Permit(OrderActionTrigger.Reset, OrderState.New)
.Permit(OrderActionTrigger.Create, OrderState.Created)
.Ignore(OrderActionTrigger.Ship);
order.Configure(OrderState.Shipped)
.OnEntry(OrderDetail.Ship)
.Permit(OrderActionTrigger.Reset, OrderState.New)
.Permit(OrderActionTrigger.Create, OrderState.Created)
.Ignore(OrderActionTrigger.Cancel);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment