' 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 NextEnd Sub