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

  • 相关阅读:
    如何将PDF转换成word文档
    pdf转换成word教程
    VMware Net 模式网络配置
    多系统引导-refind
    Linux 磁盘分区调整工具
    Centos 8 安装 docker
    Centos 8 安装 gitlab13
    Centos 8 安装压缩版 mysql-8.0.21-el7-x86_64.tar.gz
    CentOS 添加用户并赋予管理员权限
    Centos 7 防火墙(firewall-cmd)添加端口访问
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1986686.html
Copyright © 2011-2022 走看看