/// <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);
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            //AOP容器对象
            AOPContainer container = new AOPContainer();
            //socket对象
            RRPCSetupEntrance superMain = new RRPCSetupEntrance((unity) => {
            }, (unity) => {
            }, (unitytoo) => {
                unitytoo.AddForwardingRequestNamespace("ITestServer", (x) => x.FirstOrDefault());
            });

            while ("q" != Console.ReadLine())
            {
                CommandConsole command = new CommandConsole(container);
                command.MonitorCommand();
            }
        }
Exemple #3
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");
        }
 /// <summary>
 /// 初始化
 /// </summary>
 public CommandConsole(AOPContainer aOPContaine)
 {
     this.aOPContainer   = aOPContaine;
     StartDateTime       = DateTime.Now;
     CommandExecutionRPC = new List <Type>();
 }
Exemple #5
0
        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);
            }
        }