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;
订阅事件之后,获取数据传输对象的值: