亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#基于自定義事件EventArgs實(shí)現(xiàn)發(fā)布訂閱模式

 更新時(shí)間:2022年05月04日 14:46:55   作者:.NET開(kāi)發(fā)菜鳥(niǎo)  
這篇文章介紹了C#基于自定義事件EventArgs實(shí)現(xiàn)發(fā)布訂閱模式的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、事件參數(shù)

    //事件參數(shù)
    class CustomEventArgs:EventArgs
    {
        public CustomEventArgs( string message)
        {
            Message = message;
        }
        public string Message { get; set; }
    }

二、事件發(fā)布者

    //事件發(fā)布者:事件的定義和調(diào)用,觸發(fā)事件也可以寫(xiě)在這里面
    class Publisher
    {
        public event EventHandler<CustomEventArgs> CustomEvent;

        public void DoSomething()
        {
            //調(diào)用之前可以在這里寫(xiě)一些其他的東西

            //
            OnCustomEvent(new CustomEventArgs("我是事件參數(shù)"));
        }

        //在受保護(hù)的虛方法中包裝事件的調(diào)用 ,這樣就允許派生類(lèi)重寫(xiě)調(diào)用行為
        protected virtual void OnCustomEvent(CustomEventArgs e)
        {
            CustomEvent?.Invoke(this, e);
        }
    }

三、事件訂閱者

    //事件訂閱者:事件方法編寫(xiě)和訂閱功能
    class Subscriber
    {
        private readonly string Str;
        ////訂閱的動(dòng)作要在這里面了,所以才要傳過(guò)來(lái)發(fā)布者
        public Subscriber( string str,Publisher publisher)
        {
            Str = str;
            //訂閱事件
            publisher.CustomEvent += HanderCustomEvent;
        }

        private void HanderCustomEvent(object sender, CustomEventArgs e)
        {
            //在這里做想做的事件
            Console.WriteLine($"發(fā)布者:{sender.GetType()},訂閱者:{Str},參數(shù)是:{e.Message}");
        }
    }

    //事件訂閱者:事件方法編寫(xiě)和訂閱功能
    class Subscriber2
    {
        private readonly string Str;
        ////訂閱的動(dòng)作要在這里面了,所以才要傳過(guò)來(lái)發(fā)布者
        public Subscriber2(string str, Publisher publisher)
        {
            Str = str;
            //訂閱事件
            publisher.CustomEvent += HanderCustomEvent;
        }

        private void HanderCustomEvent(object sender, CustomEventArgs e)
        {
            //在這里做想做的事件
            Console.WriteLine($"發(fā)布者:{sender.GetType()},訂閱者:{Str},參數(shù)是:{e.Message}");
        }
    }

四、調(diào)用事件

        static void Main(string[] args)
        {
            Publisher publisher = new Publisher();
            Subscriber subscriber1 = new Subscriber("subscriber1", publisher);
            Subscriber2 subscriber2 = new Subscriber2("subscriber2", publisher);
            //調(diào)用引發(fā)事件的方法
            publisher.DoSomething();

            Console.ReadKey();
        }

到此這篇關(guān)于C#基于自定義事件EventArgs實(shí)現(xiàn)發(fā)布訂閱模式的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論