软件编程
位置:首页>> 软件编程>> C#编程>> C# 标准事件流实例代码

C# 标准事件流实例代码

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

标签:c#,标准,事件流

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


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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com