C # Как вызвать метод с неизвестным числом параметров

Здесь я достиг своего предела навыков. Я даже не знаю, возможно ли это, но надеюсь, что это так.

Я делаю обработчик команд (текст). Для каждого Add () вы указываете количество необходимых параметров и их типы. Например:

void Add(string commandName, int requiredParameters, params Type[] paramTypes) { }
Add("test", 2, typeof(string), typeof(int));

Таким образом, пример команды будет: / test hello 7 . Обработчик команд проверяет правильность типов, например, он завершится ошибкой, если второй параметр не может быть преобразован в int.

Теперь у меня возникла проблема: я хочу передать метод в Добавить () . (Обработчик команд вызовет этот метод, если все проверки пройдены, и вызовет его с обязательными параметрами). Таким образом, рассматриваемый метод может иметь любое количество параметров в зависимости от того, что было передано в Add () .

Как мне этого добиться? Делегат не работает, жалуется на несоответствие параметров. Я пробовал делать что-то вроде:

void Add<T1, T2>(..., Action<T1, T2> method) { }
Add(..., new Action<string, int>(cmd_MyMethod));

Но мне пришлось бы создать метод Add () для многих типов. Например, Add , и это также затрудняет ввод вызовов Add () .

I do not хочет передать вызываемый метод в виде строки, тогда используйте this.GetType (). GetMethod () , чтобы получить его дескриптор. Хотя этот способ был бы идеальным, он портит, когда я выполняю обфускацию.

Кто-нибудь знает, как это сделать? Заранее спасибо.

6
задан Laurence Gonsalves 18 November 2010 в 21:25
поделиться