如何使用反射调用动态对象的方法

How to invoke method of dynamic object using reflection

我有 dynamic 对象,其中包含 V8ScriptEngine 生成的一些 execute 函数。我需要使用在 Dictionary 对象中指定的参数来执行此方法。我试过这种方法:

private dynamic InvokeMethod(dynamic scriptObject, Dictionary<string, string> inpuValues)
{
        dynamic result;
        ((DynamicObject) scriptObject).TryInvoke(scriptObject.execute, inpuValues.Values.ToArray(), out result);
        return result;
}

但它抛出

TypeError: Method or property not found

我也试过 scriptObject.GetType().GetMethod("execute").Invoke 结果一样 但是,如果我尝试手动执行它(例如 scriptObject.execute(1,2)),它将 return 有效结果。我如何动态调用此方法?

通过 IReflect 怎么样?

var result = ((IReflect)scriptObject).InvokeMember(
    "execute",
    BindingFlags.InvokeMethod, null, null,
    inpuValues.Values.Cast<object>().ToArray(),
    null, null, null);