How to set up a dynamic event handler using Reflection

I would like to dynamically set a list of custom event handlers like this in pseudo code:

FieldInfo[] fieldInfos = this.GetType().GetFields( BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach (FieldInfo fieldInfo in fieldInfos) { if this.fieldInfo.GetType() = TypeOf(CustomEventHandler<this.fieldInfo.Name>) { this.fieldInfo.Name += new CustomEventHandler<this.fieldInfo.Name>(OnChange<this.fieldInfo.Name>); } } 

I can not find the correct syntax?

+5
source share
2 answers

How to get GetEvents instead of GetFields?

  var t = something.GetType(); var eventInfos = t.GetEvents(); foreach (var info in eventInfos) { if (info.EventHandlerType == TypeOf(CustomEventHandler<this.fieldInfo.Name>) info.AddEventHandler(...); } 

I'm not quite sure about the type comparison, but again, fieldInfo.Name cannot be used in this way.

+7
source

Use Type.GetEvents (), not GetFields (). Then you can use EventInfo.AddEventHandler ().

+4
source

All Articles