C#在自定义事件里传递自定义数据,使用EventArgs的姿势
EventArgs是包含事件数据的类的基类,用于传递事件的细节。今天分享的是使用泛型来约束EventArgs,在事件里传递自定义数据的例子。
正题
由于这个关注点很小,直接上代码了。
定义泛型类TEventArgs:
public class TEventArgs<T> : EventArgs
{
public TEventArgs(T t)
{
Data = t;
} public T Data { get; set; }
}
定义数据传输类:
/// <summary>
/// 工业相机OCR识别条码事件数据传输对象
/// </summary>
public class ScanDataDto
{
/// <summary>
/// 编码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 数据来源,设备键值
/// </summary>
public string PortKey { get; set; }
/// <summary>
/// 扫描时间
/// </summary>
public DateTime ScanDateTime { get; set; }
}
定义自定义事件:
/// <summary>
/// 相机识别成功条码数据的事件
/// </summary>
public event Action<TEventArgs<ScanDataDto>> ScanDataReceiving;
订阅事件之后,获取数据传输对象的值:

杂谈
今天又看了腾讯公开课,软谋教育“C#、.net架构师设计模式特训”。今天是看已经学过的观察者模式里面事件和委托的运用。
关于事件和委托,博客园波哥2010的大白话系列之C#委托与事件讲解(序言)比较好懂,建议看看。这次Eleven老师又扩展了新的知识点。想到受益良多,不仅感慨,学了老师课程半年多了。但是一直没有好好把学到的知识运用到架构工作中去,深感遗憾。在这里帮老师打个广告吧。老师的课程真的不错,需要进阶的童鞋们请多关注。这里附上课程的链接:软谋教育“C#、.net架构师设计模式特训”因为工作还是比较忙没打算参加老师的VIP课程。主要还是以为架构师是养成的,呵呵。当有了架构设计能力,工作中BOSS还要看到你搭建的架构有亮点,有代替原有框架的价值才会给架构师这个职位。目前公司的首席架构师离开几年之后,后来者再也超越不了他。所以老架构就沿用了近十年。想做架构师很久了,现在看这个目标还需要继续努力,希望早一点把自己的很多想法融合到自己的框架当中。
C#在自定义事件里传递自定义数据,使用EventArgs的姿势的更多相关文章
- 【C#】往按钮事件中传递自定义参数
情景:代码动态生成的按钮,需要自定义点击事件.但是生成的点击事件的参数是固定的,如何才能传入自定义的参数? Button btn = new Button() { Content = "这是 ...
- 如何在element-UI 组件的change事件中传递自定义参数
以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...
- element-ui组件中的input等的change事件中传递自定义参数
以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...
- Vue自定义事件:触发自定义事件
一 项目结构 二 子组件(Mongo.vue) <template> <button @click="eat">按钮</button> < ...
- 由自定义事件到vue数据响应
前言 除了大家经常提到的自定义事件之外,浏览器本身也支持我们自定义事件,我们常说的自定义事件一般用于项目中的一些通知机制.最近正好看到了这部分,就一起看了下自定义事件不同的实现,以及vue数据响应的基 ...
- vue2自定义事件之$emit
父组件: API上的解释不多: https://cn.vuejs.org/v2/api/#vm-emit vm.$emit( event, […args] ) 参数: {string} event [ ...
- javascript和jquey的自定义事件小结
“通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率.” 可以把多个关联但逻辑复杂的操作利用自定义事件的机制灵活地控制好 对象之间通过直接方法调用来交互 1)对象A直接调用 ...
- Qt 学习之路:自定义事件
尽管 Qt 已经提供了很多事件,但对于更加千变万化的需求来说,有限的事件都是不够的.例如,我要支持一种新的设备,这个设备提供一种崭新的交互方式,那么,这种事件如何处理呢?所以,允许创建自己的事件 类型 ...
- mui.fire()触发自定义事件
导读:添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,通过mui.fire()方法可触发目标窗口的自定义事件. 监听自定义事件 添加自定义事件监听操作和标准js事件监听类 ...
随机推荐
- python异步并发模块concurrent.futures入门详解
concurrent.futures是一个非常简单易用的库,主要用来实现多线程和多进程的异步并发. 本文主要对concurrent.futures库相关模块进行详解,并分别提供了详细的示例demo. ...
- LeetCode 371. Sum of Two Integers (两数之和)
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...
- js实现获取短信验证码倒计时
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Python Web框架篇:Django templates(模板)
为什么用templates? views.py视图函数是用来写Python代码的,HTML可以被直接硬编码在views.py之中.如下: import datetime def current_tim ...
- Air Raid
Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 用iptables 做NAT代理上网
背景:有一台A服务器不能上网,和B服务器通过内网来连接,B服务器可以上网,要实现A服务器也可以上网. 内网主机: A eth1:172.16.1.8 外网主机: B eth0:10.0.0.61外网主 ...
- 蓝桥杯-算法训练--ALGO-5 最短路
问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式 第一行两个整数n, m. 接下来的m行,每行有三个 ...
- redhat7 Samba
1.先安装Samba服务 yum install -y samba samba-client 2.配置文件 vi /etc/samba/smb.conf --主配置文件 [global] --全局 ...
- 技嘉 gigabyte b75m d3v 主板 定时开机无效问题解决
BIOS 里面设置定时开机后发现到点并没有正常启动~~~ 百思不得解.后来发现原来是WIN8系统下的控制面板的关机并非正常关机,而是不保存设置的非正常关机,在开始菜单右键——关闭或注销——关闭计算机 ...
- 微服务下的契约测试(CDC)解读
1. 前言 有近两周没有在公众号中发表文章了,看过我之前公众号的读者都知道,公众号中近期在连载<RobotFramework接口自动化系列课程>,原本计划每周更新一篇,最近由于博主在带一个 ...