public void Intercept(IInvocation invocation)
        {
            var invocationInfo = CheckInvocation(invocation);
            var paramTab       = new Hashtable();

            if (invocationInfo.ParameterInfos != null)
            {
                for (var i = 0; i != invocationInfo.ParameterInfos.Length; ++i)
                {
                    FubeiParamParser.ParseToHashtable(invocationInfo.ParameterInfos[i], invocation.Arguments[i], ref paramTab);
                }
            }
            // 参数
            var host = GetApiHost();

            // 创建请求Promise,返回response
            invocation.ReturnValue = Execute(host, invocationInfo.ApiAttribute, paramTab, invocation.Method.ReturnType);
        }
        private static InvocationInfo CheckInvocation(IInvocation invocation)
        {
            var apiAttr    = FubeiParamParser.GetApiAttribute(invocation.Method);
            var parameters = invocation.Method.GetParameters();

            //var returnType = invocation.Method.ReturnType;

            //if (returnType.GetGenericTypeDefinition() != typeof(Promise<>) && returnType.GetGenericTypeDefinition() != typeof(IPromise<>))
            //{
            //    throw new ArgumentException("抽象接口Api返回的类型必须为Promise<>或IPromise<>");
            //}
            // 限定该拦截器中生成的对象返回时Promise

            return(new InvocationInfo
            {
                ApiAttribute = apiAttr,
                ParameterInfos = parameters
            });
        }