Здесь я достиг своего предела навыков. Я даже не знаю, возможно ли это, но надеюсь, что это так.
Я делаю обработчик команд (текст). Для каждого 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 ()
, чтобы получить его дескриптор. Хотя этот способ был бы идеальным, он портит, когда я выполняю обфускацию.
Кто-нибудь знает, как это сделать? Заранее спасибо.