我得到了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;
}
但是会抛出
类型错误:方法或属性未找到
我也尝试了scriptObject.GetType().GetMethod("execute").Invoke
与相同的结果但如果我尝试手动执行它(例如scriptObject.execute(1,2)
),它将返回有效的结果。如何动态调用此方法?
看一下IReflect
怎么样?
var result = ((IReflect)scriptObject).InvokeMember(
"execute",
BindingFlags.InvokeMethod, null, null,
inpuValues.Values.Cast<object>().ToArray(),
null, null, null);