【问题标题】:How to invoke method of dynamic object using reflection如何使用反射调用动态对象的方法
【发布时间】:2016-10-07 23:21:40
【问题描述】:

我有 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:找不到方法或属性

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

【问题讨论】:

    标签: c# reflection clearscript


    【解决方案1】:

    通过IReflect怎么样?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2023-04-05
      • 2013-03-23
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多