簡體   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