字段信息在组件上返回空值
本文关键字:返回 空值 组件 信息 字段 | 更新日期: 2023-09-27 18:32:48
>我正在尝试获取 BindingSource 的事件列表,并返回 null 作为我的代码:
// bs is my BindingSource
PropertyInfo propertyInfo = bs.GetType()
.GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Static |
BindingFlags.Instance | BindingFlags.FlattenHierarchy);
EventHandlerList eventHandlerList = propertyInfo
.GetValue(bs, new object[] { }) as EventHandlerList;
// The following line returns null
FieldInfo fieldInfo = typeof(BindingSource)
.GetField("AddingNew", BindingFlags.Instance | BindingFlags.FlattenHierarchy |
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
我放置了所有可能的绑定标志,但错误仍然存在。我做错了什么?
使用反射找到更好的答案作为重复的 AddEventHandler - 使用 Type.GetEvent。
AddingNew 是事件,所以要操作它,你需要获取相应的自动生成的方法 - "remove_{EventName}"和"add_{EventName}":
var add = typeof(System.Windows.Forms.BindingSource).GetMethod("add_AddingNew");
正确的使用方法GetEvent
:
var adding = typeof(System.Windows.Forms.BindingSource).GetEvent("AddingNew");
有关如何实现事件的详细信息,请参阅事件如何实现。