zoukankan      html  css  js  c++  java
  • 清除一个对象所有事件所挂钩的delegate

    using System.Reflection; //需在添加 这个引用
     
    /// <summary> 
             
    /// 清除一个对象所有事件所挂钩的delegate 
             
    /// </summary> 
             
    /// <param>有事件的对象</param> 
             public static void ClearAllEvents(object objectHasEvents) 
             { 
                 if (objectHasEvents == null
                 { 
                     return
                 } 
                 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++) 
                 { 
                     try 
                     { 
                         EventInfo ei = events[i]; 
                         /******************************************************** 
                          * class的每个event都对应了一个同名的private的delegate类 
                          * 型成员变量(这点可以用Reflector证实)。因为private成 
                          * 员变量无法在基类中进行修改,所以为了能够拿到base 
                          * class中声明的事件,要从EventInfo的DeclaringType来获取 
                          * event对应的成员变量的FieldInfo并进行修改 
                          *******************************************************
    */ 
                         FieldInfo fi = 
                             ei.DeclaringType.GetField(ei.Name, 
                                                       BindingFlags.NonPublic | 
                                                       BindingFlags.Instance); 
                         if (fi != null
                         { 
                             // 将event对应的字段设置成null即可清除所有挂钩在该event上的delegate 
                             fi.SetValue(objectHasEvents, null); 
                         } 
                     } 
                     catch 
                     { 
                     } 
                 } 
             }
  • 相关阅读:
    女子腰背疼痛案
    老人心悸心膝部无力屈伸不利案
    经方生姜泻心汤临床应用发挥
    电话求诊易误治
    女子乳房结块案
    小儿手足口案
    门纯德老先生经验
    男子肋部掣痛案
    加味潜降汤治疗阴虚阳亢之眩晕(来自网络)
    三叉神经痛与芎胡六虫汤
  • 原文地址:https://www.cnblogs.com/lujin49/p/2364187.html
Copyright © 2011-2022 走看看