AddHandlerByName - Attaching to an object an event handler by name
' A generic routine that takes an object, an event name, and a list of potential
' delegates to event handlers, and selects the first delegate that matches the
' expected signature of the event handler.
'
' Example:
' AddHandlerByName(da, "RowUpdated", ' New OleDbRowUpdatedEventHandler
' (AddressOf OnOleDbRowUpdated),
' New SqlRowUpdatedEventHandler(AddressOf OnSqlRowUpdated))
Sub AddHandlerByName(ByVal obj As Object, ByVal eventName As String, _
ByVal ParamArray events() As [Delegate])
' Get the type of the object argument.
Dim ty As System.Type = obj.GetType()
' Get the EventInfo corresponding to the requested event
Dim evInfo As System.Reflection.EventInfo = ty.GetEvent(eventName)
' Get the delegate class that represents the event procedure
Dim evType As System.Type = evInfo.EventHandlerType
' Compare this type with arguments being passed.
Dim del As [Delegate]
For Each del In events
If del.GetType Is evType Then
' If this is the right delegate, add it to the list of event
' handlers and exit.
evInfo.AddEventHandler(obj, del)
Exit Sub
End If
Next
End Sub