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的姿势的更多相关文章

  1. 【C#】往按钮事件中传递自定义参数

    情景:代码动态生成的按钮,需要自定义点击事件.但是生成的点击事件的参数是固定的,如何才能传入自定义的参数? Button btn = new Button() { Content = "这是 ...

  2. 如何在element-UI 组件的change事件中传递自定义参数

    以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...

  3. element-ui组件中的input等的change事件中传递自定义参数

    以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...

  4. Vue自定义事件:触发自定义事件

    一 项目结构 二 子组件(Mongo.vue) <template> <button @click="eat">按钮</button> < ...

  5. 由自定义事件到vue数据响应

    前言 除了大家经常提到的自定义事件之外,浏览器本身也支持我们自定义事件,我们常说的自定义事件一般用于项目中的一些通知机制.最近正好看到了这部分,就一起看了下自定义事件不同的实现,以及vue数据响应的基 ...

  6. vue2自定义事件之$emit

    父组件: API上的解释不多: https://cn.vuejs.org/v2/api/#vm-emit vm.$emit( event, […args] ) 参数: {string} event [ ...

  7. javascript和jquey的自定义事件小结

    “通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率.” 可以把多个关联但逻辑复杂的操作利用自定义事件的机制灵活地控制好 对象之间通过直接方法调用来交互 1)对象A直接调用 ...

  8. Qt 学习之路:自定义事件

    尽管 Qt 已经提供了很多事件,但对于更加千变万化的需求来说,有限的事件都是不够的.例如,我要支持一种新的设备,这个设备提供一种崭新的交互方式,那么,这种事件如何处理呢?所以,允许创建自己的事件 类型 ...

  9. mui.fire()触发自定义事件

    导读:添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,通过mui.fire()方法可触发目标窗口的自定义事件. 监听自定义事件 添加自定义事件监听操作和标准js事件监听类 ...

随机推荐

  1. Codeforces Round #439 (Div. 2) C DP(图论)

    C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. DB---数据库中Schema的理解

    今天看到了Schema一词,对于它的理解网上也是说法很多,有一种受到认可的程度比较大,暂且先使用一下: " 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table, ...

  3. 一个强大的封装好的pdo处理类

    php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了.不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类. ...

  4. Windows环境下多线程编程原理与应用读书笔记(2)————面向对象技术

    面向对象技术是学C++需要重点掌握的知识,因为我觉得自己的基础还是比较可以,这一章节的内容就只是粗略的读了一遍,在此就不做过多的笔记.

  5. Problem L

    Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: L&qu ...

  6. Android 开发笔记___Intent的使用

    public class ActRequestActivity extends AppCompatActivity implements OnClickListener { private EditT ...

  7. Flex 基础语法(二)

    1.flex -direction 属性 含义 row(默认值) 主轴为水平方向,起点在左端. row-reverse 主轴为水平方向,起点在右边. column 主轴为垂直方向,起点在上沿. col ...

  8. grunt concat针对有依赖文件的js脚本的合并

    grunt concat针对有依赖文件的js脚本的合并: 在一个入口文件index.js里,有很多依赖文件,主要分两类,一类是和主文件同目录,另一类是其他目录下的js(cmd.非cmd的js文件,一般 ...

  9. YSlow---基于firebug的插件 ,用于网站页面性能的分析

    YSlow有什么用? YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. YSlow可以分析任何网站,并为每一个规则产生一个整体报告,如果页面可以进行优化,则Y ...

  10. jQuery_事件学习

    一.click事件 click事件----鼠标单击事件 $('.bt').click(function() { alert("本身的事件");}) 当class为bt的div被但单 ...