I'm trying to write a class whose constructor expects a reference to a control / component, and the name of an event within the control class. The purpose is to dynamically subscribe to the specified event from the instance of the referenced control by adding a event handler at run-time:

```
Public NotInheritable Class ExampleType(Of T As Component)

    Public ReadOnly Property Target As T

    Public Sub New(target As T, eventName As String)
        Me.Target = target

        Dim eventsProperty As PropertyInfo = 
            GetType(Component).GetProperty("Events", 
                                           BindingFlags.DeclaredOnly Or 
                                           BindingFlags.ExactBinding Or 
                                           BindingFlags.Instance Or 
                                           BindingFlags.NonPublic, 
                                           Type.DefaultBinder, 
                                           GetType(EventHandlerList), 
                                           Type.EmptyTypes, Nothing)

        Dim eventHandlerList As EventHandlerList = 
            DirectCast(eventsProperty.GetValue(target, BindingFlags.Default, 
                                               Type.DefaultBinder, Nothing, 
                                               CultureInfo.InvariantCulture), 
                                               EventHandlerList)

        Dim eventHandler As New EventHandler(AddressOf Me.Target_Handler)
        eventHandlerList.AddHandler(eventName, eventHandler)
    End Sub

    Private Sub Target_Handler(sender As Object, e As EventArgs)
        Console.WriteLine("Test")
    End Sub

End Class

```

Example usage:

```
Dim target As NumericUpDown = Me.NumericUpDown1
Dim eventName As String = NameOf(NumericUpDown.ValueChanged)

Dim example As New ExampleType(Of NumericUpDown)(target, eventName)

```

The problem is that in the example above the `Target_Handler` method is never reached when in this case the `Me.NumericUpDown1.ValueChanged` event is raised, unless I invoke the event handler method from code (with: `eventHandlerList(eventName).DynamicInvoke(target, Nothing)`)

What I'm doing wrong?, how to solve my problem?. Thanks in advance.