C#标准事件流
时间:2022-07-22
本文章向大家介绍C#标准事件流,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
服装价格变动,触发淘宝发布活动和消费者购买衣服事件流
1 public class EventStandard
2 {
3 public class Clothes {
4
5 /// <summary>
6 /// 服装编码
7 /// </summary>
8 public string Id { get; set; }
9
10 /// <summary>
11 /// 服装名称
12 /// </summary>
13 public string Name { get; set; }
14
15 /// <summary>
16 /// 服装价格
17 /// </summary>
18 private double _price;
19
20 public double Price {
21 get { return this._price; }
22 set {
23 PriceRiseHandler?.Invoke(this, new PriceEventArgs()
24 {
25 OldPrice = this._price,
26 NewPrice = value
27 });
28 this._price = value;
29 }
30 }
31
32 /// <summary>
33 /// 服装价格变动事件
34 /// </summary>
35 public event EventHandler PriceRiseHandler;
36
37 }
38
39 /// <summary>
40 /// 衣服价格事件参数 一般会为特定的事件去封装个参数类型
41 /// </summary>
42 public class PriceEventArgs : EventArgs
43 {
44 public double OldPrice { get; set; }
45 public double NewPrice { get; set; }
46 }
47
48 public class TaoBao {
49 /// <summary>
50 /// 淘宝订户
51 /// </summary>
52 public void PublishPriceInfo(object sender, EventArgs e) {
53 Clothes clothes = (Clothes)sender;
54 PriceEventArgs args = (PriceEventArgs)e;
55 if (args.NewPrice < args.OldPrice)
56 Console.WriteLine($"淘宝:发布衣服价格下降的公告,{clothes.Name}服装直降{args.OldPrice - args.NewPrice}元,限时抢购!");
57 else
58 Console.WriteLine("淘宝:价格悄悄上涨或价格未变化,啥也不做");
59 }
60
61 }
62
63 public class Consumer
64 {
65 /// <summary>
66 /// 消费者订户
67 /// </summary>
68 public void Buy(object sender, EventArgs e)
69 {
70 Clothes clothes = (Clothes)sender;
71 PriceEventArgs args = (PriceEventArgs)e;
72 if (args.NewPrice < args.OldPrice)
73 Console.WriteLine($"消费者:之前价格{args.OldPrice},现在价格{args.NewPrice},果断买了!");
74 else
75 Console.WriteLine($"消费者:等等看,降价了再说");
76 }
77 }
78
79 public static void Show()
80 {
81 Clothes clothes = new Clothes()
82 {
83 Id = "12111-XK",
84 Name = "优衣库",
85 Price = 128
86 };
87 //订阅:把订户和发布者的事件关联起来
88 clothes.PriceRiseHandler += new TaoBao().PublishPriceInfo;
89 clothes.PriceRiseHandler += new Consumer().Buy;
90 //价格变化,自动触发订户订阅的事件
91 clothes.Price = 300;
92 }
93
94 }
调用:
clothes.Price = 300;
EventStandard.Show();
clothes.Price = 98;
EventStandard.Show();
- node中创建服务进程
- 数据挖掘工程师:如何通过百度地图API抓取建筑物周边位置、房价信息
- crontab导致CPU异常的问题分析及处理(r3笔记第100天)
- 短信接口被恶意调用(二)肉搏战-阻止恶意请求
- 关于首屏时间采集自动化的解决方案
- javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites
- 一次数据库无法登陆的问题及排查 (r3笔记第99天)
- 用深度学习keras的cnn做图像识别分类,准确率达97%
- 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
- job处理缓慢的性能问题排查与分析(r4笔记第18天)
- 京东商品评论情感分析:数据采集与词向量构造方法
- springboot开启access_log日志输出
- 完美的执行计划导致的性能问题(r4笔记第17天)
- 解决Docker容器时区及时间不同步的问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android如何设置Activity背景色为透明色
- Android 手机防止休眠的两种实现方法
- Android编程实现的首页左右滑动切换功能示例
- 零基础学小程序004----小程序post请求,提交数据到服务器,小程序下单,小程序用户注册功能
- HorizontalScrollView水平滚动控件使用方法详解
- Android Activity生命周期和堆栈管理的详解
- Android学习之SharedPerference存储详解
- Android编程实现对话框Dialog背景透明功能示例
- Android开发中DatePicker日期与时间控件实例代码
- Android Shader应用开发之霓虹闪烁文字效果
- Android中ToggleButton开关状态按钮控件使用方法详解
- 零基础学小程序005---小程序登陆注册功能实现
- Android RecyclerView 复用错乱通用解法详解
- Android把Bitmap保存为PNG图像文件的简单代码
- 零基础学小程序006---小程序获取用户信息用户昵称