Делегат, принимающий ноль, один или несколько параметров - PullRequest
0 голосов
/ 19 марта 2012

В C # возможно ли объявить делегат таким образом, чтобы он принимал ноль, один или несколько параметров? Поможет ли ключевое слово dynamic

Другими словами, если у меня есть набор функций, которые я добавляю к этому делегату, можно ли определить, на основе количества и типов параметров, какую из этих функций вызывать, когда вызывается делегат?

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Из документации MSDN:

Делегату может быть назначен любой метод, который соответствует подписи делегата, которая состоит из типа и параметров возврата.

Само понятие динамических параметров делегата противоречило бы этому определению.Поэтому нет, вы не можете иметь делегата, принимающего несколько подписей.

0 голосов
/ 19 марта 2012

Непонятно, как вы собираетесь обобщать цепочку вызовов функций с различными параметрами, типом и типом возврата (насколько я понял). Определенно delegate не ваш друг здесь.

Что вам нужно сделать, IMO, это:

Определите пользовательский класс, в котором вы можете объединять нужные функции и вызывать их итерацией по списку, очереди или как угодно. Если вы хотите использовать delegates, вам нужно определить один делегат для каждого типа функции. На самом деле это хорошо, delegates: указатели на типобезопасные функции.

...