/// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="next">下一个中间件处理委托</param>
 /// <param name="options">请求日志选项配置</param>
 /// <param name="log">日志</param>
 /// <param name="theOperation">本次操作</param>
 public RequestLogMiddleware(RequestDelegate next, IOptions <RequestLogOptions> options, ILogable log, ITheOperation theOperation = null)
 {
     this.next         = next;
     this.options      = options.Value;
     this.log          = log;
     this.theOperation = theOperation;
 }
        /// <summary>
        /// 构造方法
        /// </summary>
        /// <param name="next">下一个中间件处理委托</param>
        /// <param name="options">路由权限选项配置</param>
        /// <param name="reader">读取API权限配置</param>
        /// <param name="localize">本地化</param>
        /// <param name="theOperation">本次操作</param>
        public RoutePermissionMiddlewareBase(RequestDelegate next, IOptions <RoutePermissionOptions> options,
                                             IReader <RoutePermissionInfo[]> reader, ILocalization localize,
                                             ITheOperation theOperation = null)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("读API权限配置[IReader<ApiPermissionInfo[]>]不能为空");
            }

            this.next         = next;
            this.options      = options.Value;
            this.reader       = reader;
            this.localize     = localize;
            this.theOperation = theOperation;
        }
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="authReader">身份读取</param>
 /// <param name="theOperation">本次操作</param>
 /// <param name="authToken">授权票据</param>
 public CommonUseDataFactory(IIdentityAuthContextReader <IdT, UserT> authReader = null, ITheOperation theOperation = null, IHttpContextAuthToken authToken = null)
 {
     this.authReader   = authReader;
     this.theOperation = theOperation;
     this.authToken    = authToken;
 }