public static object FastInvoke(this MethodInfo methodInfo, object obj, params object[] parameters)
    {
        if (methodInfo == null)
        {
            throw new ArgumentNullException(nameof(methodInfo));
        }

        MethodDelegate invoker = (MethodDelegate)MethodDic[methodInfo];

        if (invoker == null)
        {
            invoker = DynamicMethodFactory.CreateMethod(methodInfo);
            MethodDic[methodInfo] = invoker;
        }

        return(invoker(obj, parameters));
    }