PipelineNet
PipelineNet copied to clipboard
implement AddBefore and AddAfter Methods
this is good for an extensible pipeline through plugins
If this is specific to plugins and anybody wants this maybe they could inherit:
public class PluginPipeline<TParameter> : Pipeline<TParameter>
{
public PluginPipeline(IMiddlewareResolver middlewareResolver) : base(middlewareResolver)
{
}
public void AddBefore<TMiddleware1, TMiddleware2>()
where TMiddleware1 : IMiddleware<TParameter>
where TMiddleware2 : IMiddleware<TParameter>
{
int index = MiddlewareTypes.IndexOf(typeof(TMiddleware1)); // Insert before first occurrence only.
if (index == -1)
{
throw new InvalidOperationException($"No occurence of '{typeof(TMiddleware1)}' found.");
}
MiddlewareTypes.Insert(index, typeof(TMiddleware2));
}
}
?
Would actually be nice if someone made a pull request and made all public methods on Pipeline<TParameter> / AsyncPipeline<TParameter> / ResponsibilityChain<TParameter, TReturn> / AsyncResponsibilityChain<TParameter, TReturn> virtual.