如何使用Reflection动态设置事件处理程序

use*_*291 5 .net c# reflection

我想在伪代码中动态设置这样的自定义事件处理程序列表:

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>);
    }
}
Run Code Online (Sandbox Code Playgroud)

我找不到合适的语法可以吗?

Hen*_*man 7

GetEvents而不是GetFields怎么样?

    var t = something.GetType();

    var eventInfos = t.GetEvents();

    foreach (var info in eventInfos)
    {
        if (info.EventHandlerType == TypeOf(CustomEventHandler<this.fieldInfo.Name>)
                info.AddEventHandler(...);                
    }
Run Code Online (Sandbox Code Playgroud)

我不完全确定类型比较,但是再次,fieldInfo.Name不能用于类似的泛型.