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还要看到你搭建的架构有亮点,有代替原有框架的价值才会给架构师这个职位。目前公司的首席架构师离开几年之后,后来者再也超越不了他。所以老架构就沿用了近十年。想做架构师很久了,现在看这个目标还需要继续努力,希望早一点把自己的很多想法融合到自己的框架当中。

 

posted @ 2017-12-09 18:57  数据酷软件  阅读(5032)  评论(0编辑  收藏  举报