using System;
using System.Threading.Tasks;
namespace FastGithub
{
    /// 
    /// 定义中间件管道创建者的接口
    /// 
    /// 中间件上下文
    public interface IPipelineBuilder
    {
        /// 
        /// 获取服务提供者
        /// 
        IServiceProvider AppServices { get; }
        /// 
        /// 使用中间件
        /// 
        /// 
        /// 
        /// 
        /// 
        IPipelineBuilder Use() where TMiddleware : class, IMiddleware;
        /// 
        /// 使用中间件
        /// 
        /// 
        /// 
        /// 
        /// 
        IPipelineBuilder Use(Func, Task> middleware); 
        /// 
        /// 使用中间件
        /// 
        /// 中间件
        /// 
        IPipelineBuilder Use(Func, InvokeDelegate> middleware);
        /// 
        /// 创建所有中间件执行处理者
        /// 
        /// 
        InvokeDelegate Build();
        /// 
        /// 使用默认配制创建新的PipelineBuilder
        /// 
        /// 
        IPipelineBuilder New();
    }
}