假设我想要一个方法将对象的BeginInvoke方法作为参数传递。我该怎么办?电话看起来像这样:
MyRandomMethod(SomeControl.BeginInvoke);
MyRandomMethod的方法定义是什么?
问题的一部分是BeginInvoke有重载,所以编译器对于我试图将哪一个作为参数传递感到困惑。也许我需要找一种方法来说出我指的是哪个版本的BeginInvoke? (虽然我认为这将由参数类型决定)
答案 0 :(得分:3)
MyRandomMethod
必须有一个带有委托的参数,该委托匹配SomeControl.BeginInvoke
的一个重载。例如:
public void MyRandomMethod(Func<Delegate, IAsyncResult> foo)
或
public void MyRandomMethod(Func<Delegate, object[], IAsyncResult> foo)
(但请不要使用这两个签名重载MyRandomMethod
本身,否则你只是要求混淆。)