Назначьте делегата, который принимает параметры - PullRequest
2 голосов
/ 08 февраля 2010

Я смотрю на метод BackgroundWorker.ReportProgress. Может принимать 1 параметр (int) или два параметра (int, object).

Если я хочу назначить ReportProgress следующим образом:

var ReportProgressMethod = backgroundWorker.ReportProgress;

Я получаю сообщение о том, что существует неоднозначная ссылка, потому что (конечно) метод может принимать наборы параметров.

Как я могу изменить приведенное выше утверждение, говоря, что я хочу использовать int, object версию метода.

(Идея заключается в том, что я хочу передать ReportProgressMethod в качестве параметра методу.)

Ответы [ 2 ]

13 голосов
/ 08 февраля 2010
Action<int, object> reportProgressMethod = backgroundWorker.ReportProgress;
2 голосов
/ 08 февраля 2010

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

var ReportProgressMethod = new Action<int,object>(backgroundWorker.ReportProgress);

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

...