Я рассматриваю метод BackgroundWorker.ReportProgress. Он может принимать 1 param (int) или два параметра (int, object).
Если я хочу назначить ReportProgress следующим образом:
var ReportProgressMethod = backgroundWorker.ReportProgress;
Я получаю сообщение о том, что существует двусмысленная ссылка, потому что (конечно) метод может принимать наборы параметров.
Как изменить приведенный выше оператор, чтобы сказать, что я хочу использовать версию метода int, object
.
(Идея заключается в том, что я хочу передать ReportProgressMethod в качестве параметра для метода.)
Action<int, object> reportProgressMethod = backgroundWorker.ReportProgress;
Существует несколько способов помочь компилятору, но в основном вам просто нужно сделать тип делегата явным. Мое предпочтение было бы следующим:
var ReportProgressMethod = new Action<int,object>(backgroundWorker.ReportProgress);
что компилятор будет делать в любом случае (создайте экземпляр нового делегата, независимо от того, написано ли ваше новое), но igor верна в своих комментариях, что бросок тоже будет работать.