如何使用反射

时间:2016-10-07 23:21:40

标签: c# reflection clearscript

我有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)),它将返回有效结果。我该如何动态调用此方法?

1 个答案:

答案 0 :(得分:1)

如何通过IReflect

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