千家信息网

C#基于自定义事件EventArgs怎么实现发布订阅模式

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"C#基于自定义事件EventArgs怎么实现发布订阅模式"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C#基于自定义事件EventArgs怎
千家信息网最后更新 2025年02月23日C#基于自定义事件EventArgs怎么实现发布订阅模式

这篇文章主要介绍"C#基于自定义事件EventArgs怎么实现发布订阅模式"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C#基于自定义事件EventArgs怎么实现发布订阅模式"文章能帮助大家解决问题。

一、事件参数

    //事件参数    class CustomEventArgs:EventArgs    {        public CustomEventArgs( string message)        {            Message = message;        }        public string Message { get; set; }    }

二、事件发布者

    //事件发布者:事件的定义和调用,触发事件也可以写在这里面    class Publisher    {        public event EventHandler CustomEvent;        public void DoSomething()        {            //调用之前可以在这里写一些其他的东西            //            OnCustomEvent(new CustomEventArgs("我是事件参数"));        }        //在受保护的虚方法中包装事件的调用 ,这样就允许派生类重写调用行为        protected virtual void OnCustomEvent(CustomEventArgs e)        {            CustomEvent?.Invoke(this, e);        }    }

三、事件订阅者

    //事件订阅者:事件方法编写和订阅功能    class Subscriber    {        private readonly string Str;        ////订阅的动作要在这里面了,所以才要传过来发布者        public Subscriber( string str,Publisher publisher)        {            Str = str;            //订阅事件            publisher.CustomEvent += HanderCustomEvent;        }        private void HanderCustomEvent(object sender, CustomEventArgs e)        {            //在这里做想做的事件            Console.WriteLine($"发布者:{sender.GetType()},订阅者:{Str},参数是:{e.Message}");        }    }    //事件订阅者:事件方法编写和订阅功能    class Subscriber2    {        private readonly string Str;        ////订阅的动作要在这里面了,所以才要传过来发布者        public Subscriber2(string str, Publisher publisher)        {            Str = str;            //订阅事件            publisher.CustomEvent += HanderCustomEvent;        }        private void HanderCustomEvent(object sender, CustomEventArgs e)        {            //在这里做想做的事件            Console.WriteLine($"发布者:{sender.GetType()},订阅者:{Str},参数是:{e.Message}");        }    }

四、调用事件

        static void Main(string[] args)        {            Publisher publisher = new Publisher();            Subscriber subscriber1 = new Subscriber("subscriber1", publisher);            Subscriber2 subscriber2 = new Subscriber2("subscriber2", publisher);            //调用引发事件的方法            publisher.DoSomething();            Console.ReadKey();        }

关于"C#基于自定义事件EventArgs怎么实现发布订阅模式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0