如何从VB.NET中的事件中获取实际的EventHandler委托实例?
在C#中,我可以这样做:
EventHandler handler = this.SomeEvent;
……这会让我做,例如,做:
Delegate[] attachedHandlers = handler.GetInvocationList();
在VB.NET中,我似乎无法弄清楚如何做类似的事情。
这不起作用:
Dim handler As EventHandler = Me.SomeEvent
…由于以下错误:
公共事件SomeEvent(sender As Object,e As EventArgs)’是一个事件,不能直接调用。 使用’RaiseEvent’语句来引发事件。
但这也不起作用:
Dim handler As EventHandler = AddressOf Me.SomeEvent
…因为:
‘AddressOf’操作数必须是方法的名称(没有括号)。
那么如何从VB.NET中的事件中实际获取EventHandler
呢? 立即想到的唯一想法是使用reflection,但这看起来非常荒谬。
Private Event MyEvent() Private delegates() As System.Delegate = MyEventEvent.GetInvocationList()
没有证件,在这里找到
如果您看一下如何将原始对象的事件附加到深度复制克隆我有一个代码示例,说明如何通过reflection获取事件的委托。 据我所知,它是在VB中实现它的唯一方法。