如何从VB.NET中的事件中获取实际的EventHandler委托实例?

时间:2010-11-05 16:58:35

标签: c# .net vb.net events event-handling

在C#中,我可以这样做:

EventHandler handler = this.SomeEvent;

...这将允许我做,例如:

Delegate[] attachedHandlers = handler.GetInvocationList();

在VB.NET中,我似乎无法弄清楚如何做类似的事情。

这不起作用:

Dim handler As EventHandler = Me.SomeEvent

...由于以下错误:

  

公共事件SomeEvent(发件人As   Object,e As EventArgs)'是一个事件,   并且不能直接调用。用一个   'RaiseEvent'声明提出一个   事件

但这也不起作用:

Dim handler As EventHandler = AddressOf Me.SomeEvent

...因为:

  

'AddressOf'操作数必须是方法的名称(没有括号)。

那么我如何从VB.NET中的事件中获得EventHandler呢?立即想到的唯一想法是使用反射,但这看起来很荒谬。

2 个答案:

答案 0 :(得分:6)

   Private Event MyEvent()
   Private delegates() As System.Delegate = MyEventEvent.GetInvocationList()

未记录,发现here

答案 1 :(得分:0)

如果你看看这个How to Attach the Events of an Original Object to a Deep Copied Clone我有一个关于如何通过反射获取事件委托的代码示例。据我所知,它是在VB中实现它的唯一方法。