/// <summary> /// /// </summary> /// <param name="commandExecutionRPClist"></param> /// <param name="aOPContainer"></param> /// <param name="client"></param> /// <returns></returns> public int Run(List <Type> commandExecutionRPClist, AOPContainer aOPContainer, FRPCEasyClient client) { try { MethodInfo objMethod; var objType = commandExecutionRPClist.FirstOrDefault(d => d.FullName.Equals(Fullname)); if (objType == null) { Console.WriteLine($"没有找到{Fullname}的类型"); return(1); } objMethod = objType.GetMethods().FirstOrDefault(d => d.Name.Equals(Name)); if (objMethod == null) { Console.WriteLine($"没有找到{Name}函数"); return(1); } var paras = objMethod.GetParameters(); if (Para.Count() != paras.Count()) { Console.WriteLine($"参数数量不对 应为{paras.Count()}"); return(1); } List <object> paraList = new List <object>(); var paraToList = Para.ToList(); try { for (int i = 0; i < paraToList.Count(); i++) { paraList.Add(JsonConvert.DeserializeObject(paraToList[i], paras[i].ParameterType)); } } catch (Exception e) { Console.WriteLine("格式化参数失败" + e.Message); } var obj = aOPContainer.GetServices(client, objType, RRPCSessionID); var result = objMethod.Invoke(obj, paraList.ToArray()); Console.WriteLine("调用完成:" + JsonConvert.SerializeObject(result)); return(0); } catch (Exception e) { Console.WriteLine("IMP ERRER" + e.Message); return(0); } }
static void Main(string[] args) { FRPCEasyClient client = new FRPCEasyClient("127.0.0.1", 2012, null, 1500, 0); AOPContainer Container = new AOPContainer(); client.AddProvideServices <IMessage, Message>(); string ll = Console.ReadLine(); while ("q" != ll) { Container.GetServices <IMessage>(client).ShowMessage("Hello "); ll = Console.ReadLine(); } Console.WriteLine("Over"); }
public int Run(List <Type> commandExecutionRPClist, AOPContainer aOPContainer) { try { MethodInfo objMethod; var objType = commandExecutionRPClist.FirstOrDefault(d => d.FullName.Equals(fullname)); if (objType == null) { Console.WriteLine($"没有找到{fullname}的类型"); return(1); } objMethod = objType.GetMethods().FirstOrDefault(d => d.Name.Equals(name)); if (objMethod == null) { Console.WriteLine($"没有找到{name}函数"); return(1); } var paras = objMethod.GetParameters(); if (para.Count() != paras.Count()) { Console.WriteLine($"参数数量不对 应为{paras.Count()}"); return(1); } List <object> paraList = new List <object>(); var paraToList = para.ToList(); try { for (int i = 0; i < paraToList.Count(); i++) { paraList.Add(JsonConvert.DeserializeObject(paraToList[i], paras[i].ParameterType)); } } catch (Exception e) { Console.WriteLine("格式化参数失败" + e.Message); } if (RRPCServer.RRPCServerList.TryGetValue(Guid.Parse(socketServerId), out var value)) { var client = value.GetAllSessions().FirstOrDefault(d => d.SessionID == socketSessionId); if (client != null) { var obj = aOPContainer.GetServices(client, objType); var result = objMethod.Invoke(obj, paraList.ToArray()); Console.WriteLine("调用完成:" + JsonConvert.SerializeObject(result)); return(0); } else { Console.WriteLine("没有找到Session ID" + socketSessionId); return(1); } } else { Console.WriteLine("没有找到Server ID" + socketServerId); return(1); } } catch (Exception e) { Console.WriteLine("执行IMP出现错误" + e.Message); return(1); } }