我想要判断一个事件是否已经被挂钩。我查找了一些资料,但是发现很多解决方案都需要修改包含事件的对象内部,而我不想这样做。
以下是我尝试使用的测试代码:
// Create a new event handler that takes in the function I want to execute when the event fires
EventHandler myEventHandler = new EventHandler(myObject_SomeEvent);
// Get "p1" number events that got hooked up to myEventHandler
int p1 = myEventHandler.GetInvocationList().Length;
// Now actually hook an event up
myObject.SomeEvent += m_myEventHandler;
// Re check "p2" number of events hooked up to myEventHandler
int p2 = myEventHandler.GetInvocationList().Length;
很遗憾,以上内容是完全错误的。我曾认为将事件附加到myEventHandler时,“invocationList”会自动更新。但实际上并非如此。该列表的长度始终返回为一。
有没有办法从包含事件的对象外部确定其长度?