public ZsquaredDelegateAsync Build() { ZsquaredDelegateAsync app = obj => Task.Run(() => obj = null); // final step foreach (var component in components.Reverse()) { app = component(app); } return(app); }
public static ZsquaredNonBlockingPipelineBuilder BuildNonBlockingMiddleware() { ZsquaredNonBlockingPipelineBuilder app = new ZsquaredNonBlockingPipelineBuilder(); // config middleware app.Use(next => { Console.WriteLine("middleware 1"); ZsquaredDelegateAsync myDelegate = new ZsquaredDelegateAsync(async obj => { Console.WriteLine("middleware 1 start"); await next(obj); Console.WriteLine("middleware 1 end"); }); return(myDelegate); }); app.Use(next => { Console.WriteLine("middleware 2"); ZsquaredDelegateAsync myDelegate = new ZsquaredDelegateAsync(async obj => { Console.WriteLine("middleware 2 start"); await next(obj); Console.WriteLine("middleware 2 end"); }); return(myDelegate); }); app.Use(next => { Console.WriteLine("middleware 3"); ZsquaredDelegateAsync myDelegate = new ZsquaredDelegateAsync(async obj => { Console.WriteLine("middleware 3 start"); await next(obj); Console.WriteLine("middleware 3 end"); }); return(myDelegate); }); return(app); }