zoukankan      html  css  js  c++  java
  • 使用反射动态绑定与移除方法

            public void AddPublisher(object publisher, string eventName)
            {
                publishers.Add(publisher);
                EventInfo targetEvent = publisher.GetType().GetEvent(eventName);
                GuardEventExists(eventName, publisher, targetEvent);

                MethodInfo addEventMethod = targetEvent.GetAddMethod();
                GuardAddMethodExists(targetEvent);//检测是否存在这样的方法

                EventHandler newSubscriber = OnPublisherFiring;
                addEventMethod.Invoke(publisher, new object[] { newSubscriber });
            }

            public void RemovePublisher(object publisher, string eventName)
            {
                publishers.Remove(publisher);
                EventInfo targetEvent = publisher.GetType().GetEvent(eventName);
                GuardEventExists(eventName, publisher, targetEvent);

                MethodInfo removeEventMethod = targetEvent.GetRemoveMethod();
                GuardRemoveMethodExists(targetEvent);

                EventHandler subscriber = OnPublisherFiring;
                removeEventMethod.Invoke(publisher, new object[] {subscriber});
            }

  • 相关阅读:
    jQuery.extend
    Topshelf便捷创建Windows服务
    cron表达式
    定时调度框架:Quartz.net
    sqlserver自定义函数
    HTML dom document 对象
    正则表达式之 数据验证 与 文本替换
    JavaScript 之 DOM 与 BOM
    CSS 之pseudo-classes 与pseudo-element的异同
    CSS中的 position与Grid Layout
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1986686.html
Copyright © 2011-2022 走看看