static void Main(string[] args) { ZsquaredPipelineBuilder app = MockBuilder.BuildMiddleware(); ZsquaredDelegate zDelegate = app.Build(); Console.WriteLine(); ZsquaredContext context = new ZsquaredContext() { ID = 1, Name = "ZZ", IsSuccess = true }; zDelegate.Invoke(context); Console.WriteLine(context.IsSuccess); // should return false Console.WriteLine(); ZsquaredContext context2 = new ZsquaredContext() { ID = 2, Name = "Zsquared", IsSuccess = true }; zDelegate.Invoke(context2); Console.WriteLine(context2.IsSuccess); // shoud return true Console.Read(); }
public static ZsquaredPipelineBuilder BuildMiddleware() { ZsquaredPipelineBuilder app = new ZsquaredPipelineBuilder(); // config middleware app.Use(next => { Console.WriteLine("middleware 1 out"); ZsquaredDelegate myDelegate = new ZsquaredDelegate(context => { Console.WriteLine("middleware 1 start"); next(context); Console.WriteLine("middleware 1 end"); }); return(myDelegate); }); app.Use(next => { Console.WriteLine("middleware 2 out"); ZsquaredDelegate myDelegate = new ZsquaredDelegate(context => { Console.WriteLine("middleware 2 start"); next(context); Console.WriteLine("middleware 2 end"); }); return(myDelegate); }); app.Use(next => { Console.WriteLine("middleware 3 out"); ZsquaredDelegate myDelegate = new ZsquaredDelegate(context => { Console.WriteLine("middleware 3 start"); if (context.Name.Equals("ZZ", StringComparison.InvariantCultureIgnoreCase)) { next(context); } Console.WriteLine("middleware 3 end"); }); return(myDelegate); }); return(app); }