实现EventHandler的监测
需要实现这样的功能:监测程序中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的监测相关推荐
- Meta开源JavaScript内存泄漏监测工具MemLab
一.MemLab简介 上周,Facebook母公司Meta 宣布了开源 MemLab,一个基于 Chromium 的浏览器的 JavaScript 应用程序内存泄漏监测工具.同时,Facebook 技 ...
- filesystemwatch java_FileSystemWatch 对文件的监测 修改 创建 删除 并写入日志 – RunningMan1229 – 博客园...
我做的这个主要是用来对文件的监测 修改 创建 删除 并写入日志 此外我做的WinForm程序 首先导入命名空间 1 using System.IO; 申明全局变量 1 private FileSyst ...
- 2022-2028年中国钢丸行业市场行情监测及未来前景规划报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国钢丸行业市场行业相关概述.中国钢丸行业市 ...
- 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了光掩膜行业相关概述.中国光掩膜行业运行环境.分析了中国光掩膜行业的现 ...
- 吸水间最低动水位标高_水库水位库容监测系统方案
一.前 言 水利行业在中国有着悠久的历史.随着国民经济的迅猛发展,水利工程在国民经济中所起的作用越来越大,防汛更是直接影响国民经济发展的一个重要方面.我国有水库8万座左右.众所周知,水库在防洪.兴利上 ...
- 2022-2028年中国电竞椅行业市场行情监测及未来发展前景研究报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了电竞椅行业相关概述.中国电竞椅行业运行环境.分析了中国电竞椅行业的现 ...
- etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)
1. etcd 客户端 etcdctl 是一个命令行客户端,便于我们进行服务测试或手动修改数据库内容,etcdctl 在两个不同的 etcd 版本(v2 和 v3)下的功能和使用方式也完全不同. 一般 ...
- 2022-2028年中国金属薄膜行业市场深度监测及投资潜力研究报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了金属薄膜行业相关概述.中国金属薄膜行业运行环境.分析了中国金属薄膜行 ...
- 2022-2028年中国氟橡胶预混胶行业市场行情监测及未来前景规划报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了氟橡胶预混胶行业相关概述.中国氟橡胶预混胶行业运行环境.分析了中国氟 ...
最新文章
- Kotlin学习 PART 1:kotlin定义和目的
- Linux使用dd命令快速生成大文件
- 好友圈的场景有哪些特点,该如何设计?
- C# winform WebBrowser怎么获取js中的变量的值?怎么触发js的事件?
- Asp.Net Core 404处理
- keepalived+lvs(HA+LB)
- ASP.Net 管道模型 VS Asp.Net Core 管道 总结
- 合并果子(洛谷-P1090)
- STM32 - CubeMX 的使用实例详细(01.1)- ST-LINK V2 的配置
- 《UNIX编程环境》——5.6 zap:使用名字终止进程
- Hibernate一张图
- Linux设置环境变量小结:设置永久变量临时变量 全局变量局部变量
- Nifi从入门到精通(一)之 数据存储
- BOM类型转换——>EBOM、MBOM、PBOM
- 微型计算机与巨型计算机相比,微型计算机的特点及应用
- dns解析失败的处理办法
- ESP8266红外学习遥控器
- destoon网站转移空间教程
- YoloV3学习笔记(一)—— 打标签
- 在服务器上安装Linux系统
热门文章
- 腾讯NExT Studios万字解读:我们是怎样将一款偏硬核的Roguelike游戏大众化的?
- 阿里云——ECS——Linux服务器购买流程——超级细致
- Oracle 11gR1 默认设置调整
- linux系统中查看gcc内置宏定义的命令方法
- java-逻辑运算符
- pandas read_csv 出现中文乱码
- 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
- css2.1中 firefox 与IE 对margin-top的不同解释
- 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
- [导入]防止你的日志页被人iframe