Пример #1
0
        /// <summary>
        /// THttpApi的实例创建器抽象
        /// </summary>
        /// <param name="actionDescriptorProvider"></param>
        /// <param name="actionInvokerProvider"></param>
        /// <exception cref="ArgumentException"></exception>
        /// <exception cref="NotSupportedException"></exception>
        public HttpApiActivator(IApiActionDescriptorProvider actionDescriptorProvider, IApiActionInvokerProvider actionInvokerProvider)
        {
            var interfaceType = typeof(THttpApi);

            this.ApiMethods     = HttpApi.FindApiMethods(interfaceType);
            this.actionInvokers = this.ApiMethods
                                  .Select(item => actionDescriptorProvider.CreateActionDescriptor(item, interfaceType))
                                  .Select(item => actionInvokerProvider.CreateActionInvoker(item))
                                  .ToArray();

            // 最后一步创建工厂
            this.factory = this.CreateFactory();
        }
 /// <summary>
 /// 运行时使用Emit动态创建THttpApi的代理类和代理类实例
 /// </summary>
 /// <param name="apiActionDescriptorProvider"></param>
 /// <param name="actionInvokerProvider"></param>
 /// <exception cref="ArgumentException"></exception>
 /// <exception cref="NotSupportedException"></exception>
 public DefaultHttpApiActivator(IApiActionDescriptorProvider apiActionDescriptorProvider, IApiActionInvokerProvider actionInvokerProvider)
     : base(apiActionDescriptorProvider, actionInvokerProvider)
 {
 }
 /// <summary>
 /// 通过查找类型代理类型创建实例
 /// </summary>
 /// <param name="apiActionDescriptorProvider"></param>
 /// <param name="actionInvokerProvider"></param>
 /// <exception cref="ArgumentException"></exception>
 /// <exception cref="NotSupportedException"></exception>
 public SourceGeneratorHttpApiActivator(IApiActionDescriptorProvider apiActionDescriptorProvider, IApiActionInvokerProvider actionInvokerProvider)
     : base(apiActionDescriptorProvider, actionInvokerProvider)
 {
 }