Я достиг предела своих навыков здесь.Я даже не знаю, возможно ли это, но я надеюсь, что это так.
Я делаю обработчик команд (текст).Для каждого Add()
вы указываете количество обязательных параметров и их типы.Например:
void Add(string commandName, int requiredParameters, params Type[] paramTypes) { }
Add("test", 2, typeof(string), typeof(int));
Вот пример команды: /test hello 7
.Обработчик команд проверяет, чтобы типы были правильными, например, он потерпит неудачу, если второй параметр не будет преобразован в int.
Теперь проблема в том, что я хочу передать метод вAdd()
.(Обработчик команды вызовет этот метод, если все проверки пройдут, и вызовет его с необходимыми параметрами).Таким образом, рассматриваемый метод может иметь любое количество параметров в зависимости от того, что было передано в Add()
.
Как мне этого добиться?Делегат не работает, жалуется на несоответствие параметров.Я пытался сделать что-то вроде:
void Add<T1, T2>(..., Action<T1, T2> method) { }
Add(..., new Action<string, int>(cmd_MyMethod));
Но мне пришлось бы создать метод Add () для многих типов.Например, Add<T1, T2, T3, T4, etc>
, и это также затрудняет ввод вызовов на Add()
.
I Не хотите передать метод для вызова в виде строки, а затем используйте this.GetType().GetMethod()
чтобы справиться с этим.Хотя этот способ был бы идеальным, он портится, когда я делаю запутывание.
Кто-нибудь знает какой-нибудь способ сделать это?Заранее спасибо.