public object[] Serialize(JArray args) { object[] result = new object[args.Count]; for (int x = 0; x < args.Count; x++) { switch (args[x].Type) { case JTokenType.Object: result[x] = memory.GetRef((int)((JObject)args[x])["id"]); break; case JTokenType.String: result[x] = (string)args[x]; break; case JTokenType.Boolean: result[x] = (bool)args[x]; break; case JTokenType.Integer: result[x] = (int)args[x]; break; case JTokenType.Float: result[x] = (float)args[x]; break; default: throw new Exception("Revise type: " + args[x].Type.ToString()); } } return(result); }
private JObject Call(string name, JArray arr, int owner) { object ins = memory.GetRef(owner); MethodInfo method = memory.GetMethodByName(name, owner); object[] args = serializer.Serialize(arr); return(serializer.MethodReturn(method.ReturnType, method.Invoke(ins, args))); }