gpt4 book ai didi

c# - 如何使用反射动态设置事件处理程序

转载 作者:太空狗 更新时间:2023-10-29 22:24:27 24 4
gpt4 key购买 nike

我想在伪代码中动态设置自定义事件处理程序列表,如下所示:

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>);
}
}

我找不到正确的语法,你能吗?

最佳答案

用 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(...);
}

我不完全确定类型比较,但是话又说回来,fieldInfo.Name 不能在这样的泛型中使用。

关于c# - 如何使用反射动态设置事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com