C# 如何在C中获取显式事件的调用列表#
我可以使用以下内容定义事件:C# 如何在C中获取显式事件的调用列表#,c#,event-handling,C#,Event Handling,我可以使用以下内容定义事件: public event msg_callback event_PingMessage; MulticastDelegate event_delegate = (MulticastDelegate)this.GetType().GetField(event_name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetF
public event msg_callback event_PingMessage;
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
}
并使用以下命令获取事件的调用列表:
public event msg_callback event_PingMessage;
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
}
但是,如果我将我的事件\u PingMessage
定义为一个显式事件,比如:
private msg_callback explicitEvent;
public event msg_callback event_PingMessage
{
add
{
explicitEvent += value;
int i = 0;
}
remove
{
explicitEvent -= value;
}
}
MulticastDelegate事件\u delegate=…
行引发异常:
Object reference not set to an instance of an object.
我如何才能
.GetInvocationList()
用于显式事件?您只需使用expliciteEvent.GetInvocationList()
ExpliciteEvent
相当于调用类字段事件的GetField(…)
返回的字段