需要实现这样的功能:监测程序中event触发的情况,事先约定event按照这样的方式定义:

EventHandler<T> MyEvent

假设一个类定义如下:

public class EventEmitter
{public class MyEventArgs : EventArgs{}public event EventHandler<T> MyEvent;public void Emit(){OnMyEvent();}protected void OnMyEvent(){var myEventHandler = MyEvent;if (myEventHandler != null){myEventHandler(this, new MyEventArgs());}}
}

监测类定义如下:

public class EventWatcher
{public void SetProbe(object target, string eventName, Action<EventArgs> action) {var eventInfo = target.GetType().GetEvent(eventName);eventInfo.GetAddMethod().Invoke(target, new object[] { new EventHandler((sender, e) => {action(e);})});}
}

调用过程如下:

var watcher = new EventWatcher();
var emitter = new EventEmitter();
watcher.SetProbe(emitter, "MyEvent", (e) =>
{Console.WriteLine(String.Format("{0} is emitted", e.GetType()));
});
emitter.Emit();
Console.Read();

编程OK,但是运行的时候报错:

现在能够想到的就是规定Event按照如下方式定义:

EventHandler MyEvent

而不使用泛型,但是这样终究不爽,有什么办法可以解决吗?

转载于:https://www.cnblogs.com/zhengwenwei/p/3186507.html

实现EventHandler的监测相关推荐

  1. Meta开源JavaScript内存泄漏监测工具MemLab

    一.MemLab简介 上周,Facebook母公司Meta 宣布了开源 MemLab,一个基于 Chromium 的浏览器的 JavaScript 应用程序内存泄漏监测工具.同时,Facebook 技 ...

  2. filesystemwatch java_FileSystemWatch 对文件的监测 修改 创建 删除 并写入日志 – RunningMan1229 – 博客园...

    我做的这个主要是用来对文件的监测 修改 创建 删除 并写入日志 此外我做的WinForm程序 首先导入命名空间 1 using System.IO; 申明全局变量 1 private FileSyst ...

  3. 2022-2028年中国钢丸行业市场行情监测及未来前景规划报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国钢丸行业市场行业相关概述.中国钢丸行业市 ...

  4. 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了光掩膜行业相关概述.中国光掩膜行业运行环境.分析了中国光掩膜行业的现 ...

  5. 吸水间最低动水位标高_水库水位库容监测系统方案

    一.前 言 水利行业在中国有着悠久的历史.随着国民经济的迅猛发展,水利工程在国民经济中所起的作用越来越大,防汛更是直接影响国民经济发展的一个重要方面.我国有水库8万座左右.众所周知,水库在防洪.兴利上 ...

  6. 2022-2028年中国电竞椅行业市场行情监测及未来发展前景研究报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了电竞椅行业相关概述.中国电竞椅行业运行环境.分析了中国电竞椅行业的现 ...

  7. etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)

    1. etcd 客户端 etcdctl 是一个命令行客户端,便于我们进行服务测试或手动修改数据库内容,etcdctl 在两个不同的 etcd 版本(v2 和 v3)下的功能和使用方式也完全不同. 一般 ...

  8. 2022-2028年中国金属薄膜行业市场深度监测及投资潜力研究报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了金属薄膜行业相关概述.中国金属薄膜行业运行环境.分析了中国金属薄膜行 ...

  9. 2022-2028年中国氟橡胶预混胶行业市场行情监测及未来前景规划报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了氟橡胶预混胶行业相关概述.中国氟橡胶预混胶行业运行环境.分析了中国氟 ...

最新文章

  1. Kotlin学习 PART 1:kotlin定义和目的
  2. Linux使用dd命令快速生成大文件
  3. 好友圈的场景有哪些特点,该如何设计?
  4. C# winform WebBrowser怎么获取js中的变量的值?怎么触发js的事件?
  5. Asp.Net Core 404处理
  6. keepalived+lvs(HA+LB)
  7. ASP.Net 管道模型 VS Asp.Net Core 管道 总结
  8. 合并果子(洛谷-P1090)
  9. STM32 - CubeMX 的使用实例详细(01.1)- ST-LINK V2 的配置
  10. 《UNIX编程环境》——5.6 zap:使用名字终止进程
  11. Hibernate一张图
  12. Linux设置环境变量小结:设置永久变量临时变量 全局变量局部变量
  13. Nifi从入门到精通(一)之 数据存储
  14. BOM类型转换——>EBOM、MBOM、PBOM
  15. 微型计算机与巨型计算机相比,微型计算机的特点及应用
  16. dns解析失败的处理办法
  17. ESP8266红外学习遥控器
  18. destoon网站转移空间教程
  19. YoloV3学习笔记(一)—— 打标签
  20. 在服务器上安装Linux系统

热门文章

  1. 腾讯NExT Studios万字解读:我们是怎样将一款偏硬核的Roguelike游戏大众化的?
  2. 阿里云——ECS——Linux服务器购买流程——超级细致
  3. Oracle 11gR1 默认设置调整
  4. linux系统中查看gcc内置宏定义的命令方法
  5. java-逻辑运算符
  6. pandas read_csv 出现中文乱码
  7. 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
  8. css2.1中 firefox 与IE 对margin-top的不同解释
  9. 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
  10. [导入]防止你的日志页被人iframe