public virtual async Task <dynamic> InvokeAsync(PomeliumHub instance, MethodInfo methodInfo, object[] args) { dynamic ret; var method = methodInfo; var parameters = method.GetParameters(); var newArgs = new List <object>(); for (var i = 0; i < parameters.Count(); i++) { newArgs.Add(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(args[i]), parameters[i].ParameterType)); } ret = method.Invoke(instance, newArgs.ToArray()); switch (GetReturnValueType(method)) { case HubMethodType.Task: await ret; break; case HubMethodType.TaskWithReturnValue: ret = await ret; break; case HubMethodType.Value: case HubMethodType.Void: default: break; } return(ret); }
public virtual MethodInfo GetMethod(PomeliumHub instance, string methodName) { return(instance.GetType().GetTypeInfo().GetMethod(methodName)); }