[英]How to get invocation list of an explicit event in C#
I can define an event with the following: 我可以使用以下内容定义事件:
public event msg_callback event_PingMessage;
and get the invocation list of an event with the following: 并使用以下命令获取事件的调用列表:
MulticastDelegate event_delegate = (MulticastDelegate)this.GetType().GetField(event_name,
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField).GetValue(this);
foreach (var handler in event_delegate.GetInvocationList())
{
// use handler() here
}
But, if I define my event_PingMessage
as an explicit event, like: 但是,如果我将event_PingMessage
定义为显式事件,例如:
private msg_callback explicitEvent;
public event msg_callback event_PingMessage
{
add
{
explicitEvent += value;
int i = 0;
}
remove
{
explicitEvent -= value;
}
}
the MulticastDelegate event_delegate = ...
line throws an exception: MulticastDelegate event_delegate = ...
行引发异常:
Object reference not set to an instance of an object.
How can I .GetInvocationList()
for my explicit events? 如何为我的显式事件.GetInvocationList()
?
You can just use explicitEvent.GetInvocationList()
. 您可以只使用explicitEvent.GetInvocationList()
。 explicitEvent
is the equivalent of the field returned by your GetField(...)
call for a field-like event. explicitEvent
等效于您的GetField(...)
调用返回的类似字段的事件的字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.