public override Task <int> Accept(IReservationsInstrHandler handler) { return(handler.Handle(this)); }
public static async Task <TResult> Run <TResult>(this ReservationsProgram <TResult> prg, IReservationsInstrHandler handler) { var result = default(TResult); var done = false; while (!done) { switch (prg) { case Return <TResult> ret: result = ret.Result; done = true; break; case Delay <TResult> delay: prg = delay.Func(); break; case Await <TResult> _await: prg = await _await.Accept(handler); break; default: throw new NotSupportedException($"{prg.GetType().Name}"); } } return(result); }
public override Task <IReadOnlyCollection <Reservation> > Accept(IReservationsInstrHandler handler) { return(handler.Handle(this)); }
public abstract Task <ReservationsProgram <TResult> > Accept(IReservationsInstrHandler handler);