private void Interoperate() { LogicService.RequestPlayerInfo(pid).Callback = RequestReturn; new Thread(() => { while (true) { var inputs = Console.ReadLine().Split(' '); int method = 1; if (inputs.Length < 2) { Console.WriteLine("method arg"); continue; } if (!int.TryParse(inputs[0], out method) || (method < 0 || method > 4)) { Console.WriteLine("1:AskChangeName 2:AskAddMoney 3:AskLearnSkill 4:AskMove"); continue; } SceneService.AskMoveTo(1, 1); switch ((Method)method) { case Method.AskChangeName: { //var a = new TestBaseClass() {baseId = 1}; //var b = new TestDerived1Class() {baseId = 2, derived1Id = 3,}; //var c = new TestDerived2Class() {baseId = 4, derived2Id = 5,}; //var e = new TestDerived11Class() {baseId = 6, derived1Id = 7, derived11Id = 8}; LogicService.AskChangeName(pid, inputs[1]).Callback = operation => { if (!operation.IsComplete) { Console.WriteLine("LogicService.AskChangeName failed"); return; } Console.WriteLine("LogicService.AskChangeName return ret={0}", operation.Result); LogicService.RequestPlayerInfo(pid).Callback = RequestReturn; }; break; } case Method.AskAddMoney: { uint money = 0; uint.TryParse(inputs[1], out money); LogicService.AskAddMoney(pid, money).Callback = operation => { if (!operation.IsComplete) { Console.WriteLine("LogicService.AskAddMoney failed"); return; } Console.WriteLine("LogicService.AskAddMoney return ret={0}", operation.Result); LogicService.RequestPlayerInfo(pid).Callback = RequestReturn; }; } break; case Method.AskLearnSkill: { uint skillId = 0; uint.TryParse(inputs[1], out skillId); LogicService.AskLearnSkill(pid, skillId).Callback = operation => { if (!operation.IsComplete) { Console.WriteLine("LogicService.AskLearnSkill failed"); return; } Console.WriteLine("LogicService.AskLearnSkill return ret={0}", operation.Result); LogicService.RequestPlayerInfo(pid).Callback = RequestReturn; }; } break; default: throw new ArgumentOutOfRangeException(); } } } ).Start(); }