/// <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); }
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); }
/// <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); }