原文地址:点击打开链接
- #region 清除事件绑定的函数
- /// <summary>
- /// 清除事件绑定的函数
- /// </summary>
- /// <param name="objectHasEvents">拥有事件的实例</param>
- /// <param name="eventName">事件名称</param>
- public static void ClearAllEvents(object objectHasEvents, string eventName)
- {
- if (objectHasEvents == null)
- {
- return;
- }
- try
- {
- EventInfo[] events = objectHasEvents.GetType().GetEvents(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- if (events == null || events.Length < 1)
- {
- return;
- }
- for (int i = 0; i < events.Length; i++)
- {
- EventInfo ei = events[i];
- if (ei.Name == eventName)
- {
- FieldInfo fi = ei.DeclaringType.GetField(eventName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- if (fi != null)
- {
- fi.SetValue(objectHasEvents, null);
- }
- break;
- }
- }
- }
- catch
- {
- }
- }
- #endregion