【问题标题】:Passing BeginInvoke as a parameter将 BeginInvoke 作为参数传递
【发布时间】:2010-12-01 21:33:27
【问题描述】:

假设我想要一个将对象的BeginInvoke 方法作为参数传递的方法。我该怎么做?调用如下所示:

MyRandomMethod(SomeControl.BeginInvoke);

MyRandomMethod 的方法定义是什么?

部分问题是 BeginInvoke 有重载,因此编译器会混淆我尝试将哪个作为参数传递。也许我需要找到一种方法来说明我指的是哪个版本的 BeginInvoke? (虽然我想这将由参数类型决定)

【问题讨论】:

  • 这是一种代码味道,但我看不到代码。 lambda 可以解决您的问题。

标签: c# parameters methods


【解决方案1】:

MyRandomMethod 必须有一个带有与SomeControl.BeginInvoke 的重载之一匹配的委托的参数。例如:

public void MyRandomMethod(Func<Delegate, IAsyncResult> foo)

public void MyRandomMethod(Func<Delegate, object[], IAsyncResult> foo)

(但请不要使用这两个签名来重载 MyRandomMethod 本身,否则您只是在要求混淆。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2020-09-18
    • 2015-05-24
    • 2012-11-10
    • 2020-10-30
    相关资源
    最近更新 更多