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(…)
返回的字段