2016-10-07 7 views
-1

私はのオブジェクトに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)例えば)を手動でそれを実行しようとした場合

TypeError: Method or property not found

をスロー:私はこのアプローチを試してみました。どのように私はこのメソッドを動的に呼び出すことができますか?

答えて

1

IReflectはどうですか?

var result = ((IReflect)scriptObject).InvokeMember(
    "execute", 
    BindingFlags.InvokeMethod, null, null, 
    inpuValues.Values.Cast<object>().ToArray(), 
    null, null, null); 
関連する問題