2013-08-27 3 views
0

У меня есть функция, которая динамически вызывает другие функции через имя. Мне нужно передать хэш-таблицу вызываемой функции. У меня есть код, работающий в VB.Net, но, пытаясь преобразовать его в C#, я столкнулся с ошибкой, когда пытаюсь передать хеш-таблицу в качестве параметра. Может кто-нибудь объяснить, что происходит и как я могу это решить?Вызовите функцию по имени и передайте параметр hashtable в C#

Это работает VB.Net код:

Dim objTF As New ThreadFunctions 
Dim objResults As Object = CallByName(objTF, htParameters.Item("strMethodName"), CallType.Get, htParameters) 

Здесь C# код:

ThreadFunctions objTF = new ThreadFunctions(); 
Type objType = objTF.GetType(); 
MethodInfo miMethod = objType.GetMethod(htParameters["strMethodName"].ToString()); 
object objResults = miMethod.Invoke(objTF, htParameters); //This line has the issue 

Ошибка 1 Лучший перегруженный метод подходит для «System.Reflection.MethodBase.Invoke (объект, объект []) 'имеет некоторые недействительные аргументы

ответ

3

Попытка

object objResults = miMethod.Invoke(objTF, (object)htParameters); 

В качестве второго аргумента угроза хэш-таблицы неверна.

+0

Я сделал изменения и ошибки по-прежнему * Ошибка \t \t 1 Лучший перегружен матч метод «System.Reflection.MethodBase.Invoke (объект, объект [])» имеет некоторые недопустимые аргументы * –

+2

Почти есть: объект objResults = miMethod.Invoke (objTF, новый объект [] {htParameters}); – Alex

+0

Спасибо, Алекс, это сработало! –

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