C# 标准事件流实例代码

作者:滑猪小板 时间:2022-06-21 16:29:14 

服装价格变动,触发淘宝发布活动和消费者购买衣服事件流


public class EventStandard
 {
   public class Clothes {

/// <summary>
     /// 服装编码
     /// </summary>
     public string Id { get; set; }

/// <summary>
     /// 服装名称
     /// </summary>
     public string Name { get; set; }

/// <summary>
     /// 服装价格
     /// </summary>
     private double _price;

public double Price {
       get { return this._price; }
       set {
           PriceRiseHandler?.Invoke(this, new PriceEventArgs()
           {
             OldPrice = this._price,
             NewPrice = value
           });
         this._price = value;
       }
     }

/// <summary>
     /// 服装价格变动事件
     /// </summary>
     public event EventHandler PriceRiseHandler;

}

/// <summary>
   /// 衣服价格事件参数 一般会为特定的事件去封装个参数类型
   /// </summary>
   public class PriceEventArgs : EventArgs
   {
     public double OldPrice { get; set; }
     public double NewPrice { get; set; }
   }

public class TaoBao {
     /// <summary>
     /// 淘宝订户
     /// </summary>
     public void PublishPriceInfo(object sender, EventArgs e) {
       Clothes clothes = (Clothes)sender;
       PriceEventArgs args = (PriceEventArgs)e;
       if (args.NewPrice < args.OldPrice)
         Console.WriteLine($"淘宝:发布衣服价格下降的公告,{clothes.Name}服装直降{args.OldPrice - args.NewPrice}元,限时抢购!");
       else
         Console.WriteLine("淘宝:价格悄悄上涨或价格未变化,啥也不做");
     }

}

public class Consumer
   {
     /// <summary>
     /// 消费者订户
     /// </summary>
     public void Buy(object sender, EventArgs e)
     {
       Clothes clothes = (Clothes)sender;
       PriceEventArgs args = (PriceEventArgs)e;
       if (args.NewPrice < args.OldPrice)
         Console.WriteLine($"消费者:之前价格{args.OldPrice},现在价格{args.NewPrice},果断买了!");
       else
         Console.WriteLine($"消费者:等等看,降价了再说");
     }
   }

public static void Show()
   {
     Clothes clothes = new Clothes()
     {
       Id = "12111-XK",
       Name = "优衣库",
       Price = 128
     };
     //订阅:把订户和发布者的事件关联起来
     clothes.PriceRiseHandler += new TaoBao().PublishPriceInfo;
     clothes.PriceRiseHandler += new Consumer().Buy;
     //价格变化,自动触发订户订阅的事件
     clothes.Price = 300;
   }

}

调用:


clothes.Price = 300;
EventStandard.Show();

C# 标准事件流实例代码


clothes.Price = 98;
EventStandard.Show();

C# 标准事件流实例代码

来源:https://www.cnblogs.com/netlws/archive/2020/07/23/13364010.html

标签:c#,标准,事件流
0
投稿

猜你喜欢

  • java高并发之线程组详解

    2023-02-15 21:30:25
  • Java序列化JSON丢失精度问题的解决方法(修复Long类型太长)

    2022-10-15 00:01:34
  • 解决Eclipse的Servers视图中无法添加Tomcat6/Tomcat7的方法

    2023-03-30 22:22:27
  • 详解Java单元测试之Junit框架使用教程

    2022-03-06 02:55:56
  • Android 四种动画效果的调用实现代码

    2021-06-26 17:59:54
  • 深入了解Java虚拟机栈以及内存模型

    2022-02-17 13:37:50
  • SpringBoot MainApplication类文件的位置详解

    2023-10-28 16:21:12
  • Java的Swing编程中使用SwingWorker线程模式及顶层容器

    2021-09-09 08:45:06
  • 用java WebSocket做一个聊天室

    2021-11-30 00:39:55
  • Android自定义View实现竖直跑马灯效果案例解析

    2021-06-25 04:04:30
  • springboot bootstrap.yml nacos配置中心问题

    2022-07-07 08:25:01
  • Maven添加Tomcat插件实现热部署代码实例

    2021-12-09 02:03:49
  • C#在Winform开发中使用Grid++报表

    2022-04-20 03:57:13
  • Android Gradle模块依赖替换使用技巧

    2021-07-03 20:22:53
  • c# 类型的字段和方法设计建议

    2022-09-23 22:20:44
  • spring data jpa使用详解(推荐)

    2022-06-19 05:22:17
  • Java从同步容器到并发容器的操作过程

    2021-10-14 05:26:58
  • Android编程实现的短信编辑器功能示例

    2022-09-08 12:58:44
  • SpringCloud实战之Feign声明式服务调用

    2022-07-02 08:25:30
  • 用JAVA 设计生成二维码详细教程

    2021-05-29 05:48:29
  • asp之家 软件编程 m.aspxhome.com