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();
clothes.Price = 98; EventStandard.Show();
以上就是C# 标准事件流实例代码的详细内容,更多关于C# 标准事件流的资料请关注我们其它相关文章!
赞 (0)