2010-11-05 15 views
5

W języku C#, mógłby zrobić coś takiego:Jak uzyskać rzeczywistą instancję delegata zdarzenia Event z zdarzenia w VB.NET?

EventHandler handler = this.SomeEvent; 

... które pozwoliłyby mi na przykład zrobić:

Delegate[] attachedHandlers = handler.GetInvocationList(); 

W VB.NET, nie mogę wydawać dowiedzieć się, jak zrobić coś podobnego.

To nie działa:

Dim handler As EventHandler = Me.SomeEvent 

... z powodu następującego błędu:

Public Event SomeEvent(sender As Object, e As EventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

Ale to nie działa albo:

Dim handler As EventHandler = AddressOf Me.SomeEvent 

.. .exe:

'AddressOf' operand must be the name of a method (without parentheses).

Jak mogę uzyskać EventHandler z wydarzenia w VB.NET? Jedyną ideą, która od razu przychodzi na myśl, jest użycie refleksji, ale wydaje się to dość śmieszne.

Odpowiedz

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

nieudokumentowana, uznał here

+0

nice. Nigdy tego nie widziałem przed – jasper

+1

Ja też nie! Wydaje się być jednym z deweloperów "nie daj się-to-to-a-VB.Net" - podtytuł –

+0

O, drogi Boże ... –

Powiązane problemy