订阅事件的C++/CLI语法是什么?

Eri*_*ric 6 managed-c++ c++-cli

我正在用这样的行更新一些旧的Managed C++代码:

instanceOfEventSource->add_OnMyEvent( 
    new EventSource::MyEventHandlerDelegate(this, MyEventHandlerMethod) );
Run Code Online (Sandbox Code Playgroud)

哪里

  • EventSource是发布事件的类
  • instanceOfEventSource是该类的一个实例
  • EventSource :: MyEventHandlerDelegate是事件的委托类型
  • MyEventHandlerMethod是当前类(其中"this"是一个实例)中的(非静态)方法,其签名与EventSource :: MyEventHandlerDelegate匹配

C++/CLI中的正确语法是什么?

Kon*_*lph 7

语法类似于C#,换句话说,+=重载使这成为可能:

instanceOfEventSource.MyEvent +=
    gcnew EventSource::MyEventHandlerDelegate(this, &MyClass::MyEventHandlerMethod);
Run Code Online (Sandbox Code Playgroud)

类似于删除.但是,与C#不同,您可能不会省略事件处理程序委托的显式实例化,因此这会生成相当冗长的代码.