Here it is some code that shows how to use reflection to dynamically set an event handler for a class’ event.
Sub TestSub() ' create a Person Dim pe As New Person() ' get a reference to the EventInfo for this object Dim peEv As EventInfo = pe.GetType.GetEvent("PropertyChanged") ' create a delegate to the local procedure Dim peDel As [Delegate] = [Delegate].CreateDelegate(peEv.EventHandlerType, _ Me, "PropertyChanged") ' make the local procedure a handler for the event peEv.AddEventHandler(pe, peDel) ' set a propety via reflection to prove that it works ' note how you can create the array of arguments on the fly pe.GetType.InvokeMember("Name", BindingFlags.SetProperty, Nothing, pe, _ New Object() {"John"}) ' (always remove event handlers) peEv.RemoveEventHandler(pe, peDel)End Sub Private Sub PropertyChanged(ByVal propertyName As String, _ ByVal newValue As Object) MessageBox.Show("Property " & propertyName & _ " has changed. The new value is " & newValue.ToString)End Sub Class Person Event PropertyChanged(ByVal propertyName As String, _ ByVal newValue As Object) Dim m_Name As String Property Name() As String Get Return m_Name End Get Set(ByVal Value As String) If Value <> m_Name Then m_Name = Value RaiseEvent PropertyChanged("Name", m_Name) End If End Set End PropertyEnd Class