Generic "middleware" pipelines.
$ dotnet add package vertical-pipelines-dependencyinjection -v 1.0.0
var serviceCollection = new ServiceCollection();
serviceCollection.ConfigurePipeline<MyAppContext>(app =>
{
app.Use((list, next, ct) =>
{
// Implementation
return next(list, ct);
});
// Register using function
app.UseMiddleware(serviceProvider => new MiddlewareA());
// Register using type
app.UseMiddleware<MiddlewareB>();
});
var provider = serviceCollection.BuildServiceProvider();
using var scope = provider.CreateScope();
var context = new List<string>();
var pipeline = scope.ServiceProvider.GetRequiredService<PipelineDelegate<List<string>>>();
await pipeline(context, CancellationToken.None);
File an issue here.