繁体   English   中英

如何在C#中获取显式事件的调用列表

[英]How to get invocation list of an explicit event in C#

我可以使用以下内容定义事件:

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 
}

但是,如果我将event_PingMessage定义为显式事件,例如:

    private msg_callback explicitEvent;
    public event msg_callback event_PingMessage
    {
        add
        {
            explicitEvent += value;
            int i = 0; 

        }
        remove
        {
            explicitEvent -= value;
        }
    }

MulticastDelegate event_delegate = ...行引发异常:

Object reference not set to an instance of an object.

如何为我的显式事件.GetInvocationList()

您可以只使用explicitEvent.GetInvocationList() explicitEvent等效于您的GetField(...)调用返回的类似字段的事件的字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM