Skip to content

Instantly share code, notes, and snippets.

@PavelPenkov
Forked from anonymous/fsm.cs
Last active February 29, 2016 09:13
Show Gist options
  • Save PavelPenkov/c9af81c05946f372332b to your computer and use it in GitHub Desktop.
Save PavelPenkov/c9af81c05946f372332b to your computer and use it in GitHub Desktop.
using System;
public interface FSM<S,E,T> {
public void defineTransition(S oldState, E event, S newState, Action<T> action);
public void consumeEvent(E event);
public S getState();
public void setState(S newState);
}
public class Behaviours {
public static FSM<Order, OrderEvents, OrderStates> CreateOrderFsm(Order order);
}
OrderEvents nextEvent = new DeliveryEvent();
Order order = getOrderById(id);
var fsm = Behaviours.CreateOrderFsm(order, nextEvent);
fsm.consumeEvent(nextEvent);
order.save();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment