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));
 }