Exemple #1
0
        /// <summary>
        /// 代理执行方法
        /// </summary>
        /// <param name="action"></param>
        /// <param name="obj"></param>
        /// <param name="nameValues"></param>
        /// <returns></returns>
        private static ActionResult MethodInvoke(MethodInfo action, FastInvoke.FastInvokeHandler actionInvoker, object obj, NameValueCollection nameValues)
        {
            ActionResult result = null;

            try
            {
                var @params = action.GetParameters();

                if (@params != null && @params.Length > 0)
                {
                    var list = FillPamars(@params, nameValues);

                    result = (ActionResult)actionInvoker.Invoke(obj, list.ToArray());
                }
                else
                {
                    result = (ActionResult)actionInvoker.Invoke(obj, null);
                }
            }
            catch (Exception ex)
            {
                result = new ContentResult($"{obj}/{action.Name},出现异常:{ex.Message}", System.Net.HttpStatusCode.InternalServerError);
            }
            return(result);
        }
Exemple #2
0
        private object FastMethodInvoke(SrvRquest srvRquest)
        {
            SrvPath srvPath = null;

            if (dicSrv.TryGetValue(srvRquest.SrvName, out srvPath))
            {
                MethodInfo info = null;
                if (srvPath.SrvMethodInfo.TryGetValue(srvRquest.SrvMethod, out info))
                {
                    if (srvPath.SrvInstance == null)
                    {
                        srvPath.SrvInstance = Activator.CreateInstance(srvPath.SrvType);
                    }
                    //
                    List <object> list = new List <object>();
                    foreach (SrvParam param in srvRquest.SrvParam)
                    {
                        list.Add(param.ParamObj);
                    }
                    FastInvoke.FastInvokeHandler fastInvoker = FastInvoke.GetMethodInvoker(info);
                    object result = fastInvoker.Invoke(srvPath, list.ToArray());
                    return(result);
                }
                return(null);
            }
            return(null);
        }
Exemple #3
0
        /// <summary>
        /// 执行方法
        /// </summary>
        /// <param name="method"></param>
        /// <param name="methodInvoker"></param>
        /// <param name="obj"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        private static object ReversalMethod(MethodInfo method, FastInvoke.FastInvokeHandler methodInvoker, object obj, object[] args)
        {
            object result = null;

            try
            {
                var inputs = args;

                var @params = method.GetParameters();

                if (@params == null || @params.Length == 0)
                {
                    inputs = null;
                }
                result = methodInvoker.Invoke(obj, inputs);
            }
            catch (Exception ex)
            {
                throw new RPCPamarsException($"{obj}/{method.Name},用户自定义业务代码出现异常:{ex.Message}", ex);
            }
            return(result);
        }