91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#基于自定義事件EventArgs怎么實現發布訂閱模式

發布時間:2022-05-05 09:15:31 來源:億速云 閱讀:114 作者:iii 欄目:開發技術

這篇文章主要介紹“C#基于自定義事件EventArgs怎么實現發布訂閱模式”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C#基于自定義事件EventArgs怎么實現發布訂閱模式”文章能幫助大家解決問題。

一、事件參數

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

二、事件發布者

    //事件發布者:事件的定義和調用,觸發事件也可以寫在這里面
    class Publisher
    {
        public event EventHandler<CustomEventArgs> 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怎么實現發布訂閱模式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商洛市| 泰兴市| 广州市| 汉川市| 秦安县| 长海县| 塘沽区| 金山区| 且末县| 三原县| 宜宾县| 淮滨县| 宜丰县| 泊头市| 女性| 通海县| 安阳市| 长治县| 忻州市| 德钦县| 鸡西市| 县级市| 中江县| 阿鲁科尔沁旗| 谢通门县| 讷河市| 宜君县| 沙湾县| 榆社县| 安徽省| 遂平县| 林周县| 米易县| 邻水| 且末县| 尚志市| 巫山县| 海伦市| 辽阳县| 称多县| 都匀市|