定义为方法签名的委托不是有效的替代

杰罗恩·范内维尔(Jeroen Vannevel)

当我有以下示例代码时:

namespace Test {
 public delegate void TestDelegate(object sender, MyEventArgs e);

 public class A {
  public event EventHandler<MyEventArgs> Handler;

  public void Test(){
   Handler += B.Observe;
  }
 }
}

public class B {
 public void Observe(TestDelegate) {
  // Do something
 }
}

我得到了错误

“观察”没有重载匹配委托“ System.EventHandler”

但是,当我使用

Observer(object sender, MyEventArgs e){}

它工作正常。据我了解,可以在多个地方使用委托来定义方法签名,在这种情况下有什么问题?

亚历山德罗·安德里亚(Alessandro D'Andria)

委托定义签名:

public delegate void TestDelegate(object sender, MyEventArgs e);

public event TestDelegate MyEvent;

事件的处理程序必须具有与委托相同的签名:

MyEvent += MyEventHandler;

void X_Sample_MyEvent(object sender, MyEventArgs e)
{
    ...
}

您可以传递所需的Wathever类型:

public delegate void AnotherDelegate();
public delegate void TestDelegate(AnotherDelegate arg);

MyEvent += X_Sample_MyEvent;

void X_Sample_MyEvent(AnotherDelegate arg) { }

也许是这样的:

public delegate void TestDelegate(object sender, MyEventArgs e);

MyEvent += (sender, e) =>
{
    Observe(MyEvent);
};

void Observe(TestDelegate arg)
{
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

寻求替代sapply的有效方法

来自分类Dev

Autorest错误-swagger.json'不是有效的OpenAPI 2.0定义(预期为'swagger:2.0')

来自分类Dev

dict.update()在计算上是有效的还是有更有效的替代方法?

来自分类Dev

使功能在循环内的最有效替代方法

来自分类Dev

数组“ ismember”函数的有效替代方法-MATLAB

来自分类Dev

替代使用Target.Address的有效方法

来自分类Dev

合格的Haskell列表理解的有效替代方法

来自分类Dev

验证错误:此行不是有效的字段或属性定义

来自分类Dev

未定义不是有效函数上的函数

来自分类Dev

未定义不是有效函数上的函数

来自分类Dev

为SourceVersion指定的值不是有效的提交ID

来自分类Dev

为给定场景定义更有效的逻辑

来自分类Dev

边界不匹配:类型不是边界参数的有效替代

来自分类Dev

'GoogleHttpClient.send'('Future <StreamedResponse> Function(BaseRequest)')不是'IOClient.send'的有效替代

来自分类Dev

void Function(int)不是void Function(dynamic)的有效替代

来自分类Dev

绑定不匹配:Foo类型不是有效的替代项

来自分类Dev

为什么JWT签名对于特定有效负载不是唯一的

来自分类Dev

为什么JWT签名对于特定有效负载不是唯一的

来自分类Dev

强制构造函数签名是使用抽象类而不是接口的有效理由吗?

来自分类Dev

联盟声明的有效替代方案

来自分类Dev

更有效的方法,而不是使用重复的if语句

来自分类Dev

有效的解决方法而不是使用大量的 if 语句?

来自分类Dev

有效的请求签名生成

来自分类Dev

使用错误委托中的方法进行Swift协议扩展仍然有效(?!)

来自分类Dev

使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

来自分类Dev

有没有有效的替代方法来在python中增加字典?

来自分类Dev

对于OpenBSD,有没有一种有效的替代top的方法?

来自分类Dev

Internet Explorer将有效证书显示为“损坏或无效签名”

来自分类Dev

PHP为Blob存储创建有效的Azure签名

Related 相关文章

  1. 1

    寻求替代sapply的有效方法

  2. 2

    Autorest错误-swagger.json'不是有效的OpenAPI 2.0定义(预期为'swagger:2.0')

  3. 3

    dict.update()在计算上是有效的还是有更有效的替代方法?

  4. 4

    使功能在循环内的最有效替代方法

  5. 5

    数组“ ismember”函数的有效替代方法-MATLAB

  6. 6

    替代使用Target.Address的有效方法

  7. 7

    合格的Haskell列表理解的有效替代方法

  8. 8

    验证错误:此行不是有效的字段或属性定义

  9. 9

    未定义不是有效函数上的函数

  10. 10

    未定义不是有效函数上的函数

  11. 11

    为SourceVersion指定的值不是有效的提交ID

  12. 12

    为给定场景定义更有效的逻辑

  13. 13

    边界不匹配:类型不是边界参数的有效替代

  14. 14

    'GoogleHttpClient.send'('Future <StreamedResponse> Function(BaseRequest)')不是'IOClient.send'的有效替代

  15. 15

    void Function(int)不是void Function(dynamic)的有效替代

  16. 16

    绑定不匹配:Foo类型不是有效的替代项

  17. 17

    为什么JWT签名对于特定有效负载不是唯一的

  18. 18

    为什么JWT签名对于特定有效负载不是唯一的

  19. 19

    强制构造函数签名是使用抽象类而不是接口的有效理由吗?

  20. 20

    联盟声明的有效替代方案

  21. 21

    更有效的方法,而不是使用重复的if语句

  22. 22

    有效的解决方法而不是使用大量的 if 语句?

  23. 23

    有效的请求签名生成

  24. 24

    使用错误委托中的方法进行Swift协议扩展仍然有效(?!)

  25. 25

    使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

  26. 26

    有没有有效的替代方法来在python中增加字典?

  27. 27

    对于OpenBSD,有没有一种有效的替代top的方法?

  28. 28

    Internet Explorer将有效证书显示为“损坏或无效签名”

  29. 29

    PHP为Blob存储创建有效的Azure签名

热门标签

归档