我正在查看BackgroundWorker.ReportProgress方法。它可能需要1个参数(int)或两个参数(int,object)。
如果我想像这样分配ReportProgress:
var ReportProgressMethod = backgroundWorker.ReportProgress;
我得到一个错误,说有一个含糊不清的引用,因为(当然)该方法可以采用参数集。
如何更改上述声明以表示我想使用该方法的int, object
版本。
(这背后的想法是我想将ReportProgressMethod作为参数传递给方法。)
答案 0 :(得分:13)
Action<int, object> reportProgressMethod = backgroundWorker.ReportProgress;
答案 1 :(得分:2)
您可以通过多种方式帮助编译器,但基本上您只需要以某种方式使委托类型显式化。我的首选是:
var ReportProgressMethod = new Action<int,object>(backgroundWorker.ReportProgress);
这就是编译器将要做的事情(实例化一个新的委托,无论你是否写新)但igor在他的评论中是正确的,即演员也可以。