我有dynamic
个对象,其中包含由execute
生成的一些V8ScriptEngine
函数。我需要使用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:找不到方法或属性
我也试过scriptObject.GetType().GetMethod("execute").Invoke
同样的结果
但是如果我尝试手动执行它(例如scriptObject.execute(1,2)
),它将返回有效结果。我该如何动态调用此方法?
答案 0 :(得分:1)
如何通过IReflect
?
var result = ((IReflect)scriptObject).InvokeMember(
"execute",
BindingFlags.InvokeMethod, null, null,
inpuValues.Values.Cast<object>().ToArray(),
null, null, null);