C++/CLI事件是否有任何侦听器?

Ric*_*ard 5 events listeners c++-cli

在C#中,我可以检查一个事件是否有任何监听器:

C#示例:

public static event EventHandler OnClick;

if (OnClick != null)
    OnClick(null, new EventArgs() );
Run Code Online (Sandbox Code Playgroud)

在C++/CLI中,检查事件是否为null是不必要的.

C++/CLI示例:

delegate void ClickDelegate( Object^ sender, MyEventArgs^ e );
event ClickDelegate^ OnClick;

OnClick (sender, args);
Run Code Online (Sandbox Code Playgroud)

但是,在我正在进行的项目中,如果没有侦听器,我不想构造MyEventArgs对象.

如何判断OnClick是否在C++中有任何监听器?

svi*_*ick 2

看来您无法像您使用的那样使用“琐碎事件”进行检查,因为您无法直接访问底层字段(与 C# 中的自动实现属性一样)。

如果您想这样做,您可以显式指定事件的访问器方法和支持字段。有关具体操作方法,请参阅如何:定义事件访问器方法。