2016-10-07 13 views
-1

У меня есть объект 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: Method or property not found

Я также попытался scriptObject.GetType().GetMethod("execute").Invoke с тем же результатом Но если я пытаюсь выполнить его вручную (например scriptObject.execute(1,2)) вернет правильный результат. Как я могу вызвать этот метод динамически?

ответ

1

Как насчет прохождения через IReflect?

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

 Смежные вопросы

  • Нет связанных вопросов^_^