Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# eventargs

作者:步崖   发布日期:2025-04-21   浏览:47

using System;

namespace EventArgsExample
{
    // 定义一个自定义的 EventArgs 类,用于传递额外信息
    public class CustomEventArgs : EventArgs
    {
        public string Message { get; set; }

        public CustomEventArgs(string message)
        {
            Message = message;
        }
    }

    // 发布者类
    public class Publisher
    {
        // 定义一个事件,使用 EventHandler<T> 泛型委托
        public event EventHandler<CustomEventArgs> CustomEvent;

        // 触发事件的方法
        protected virtual void OnCustomEvent(CustomEventArgs e)
        {
            CustomEvent?.Invoke(this, e);
        }

        // 模拟事件触发
        public void DoSomething()
        {
            Console.WriteLine("Publisher is doing something...");
            OnCustomEvent(new CustomEventArgs("An event occurred!"));
        }
    }

    // 订阅者类
    public class Subscriber
    {
        private Publisher _publisher;

        public Subscriber(Publisher publisher)
        {
            _publisher = publisher;
            // 订阅事件
            _publisher.CustomEvent += HandleCustomEvent;
        }

        // 事件处理方法
        private void HandleCustomEvent(object sender, CustomEventArgs e)
        {
            Console.WriteLine($"Subscriber received the event: {e.Message}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Publisher publisher = new Publisher();
            Subscriber subscriber = new Subscriber(publisher);

            // 触发事件
            publisher.DoSomething();
        }
    }
}

解释说明

  1. CustomEventArgs 类:

    • 继承自 EventArgs,用于传递自定义的数据(如 Message)。
  2. Publisher 类:

    • 定义了一个事件 CustomEvent,使用 EventHandler<CustomEventArgs> 泛型委托。
    • OnCustomEvent 方法用于触发事件,并传递 CustomEventArgs 对象。
    • DoSomething 方法模拟了某个操作完成后触发事件的行为。
  3. Subscriber 类:

    • 订阅了 PublisherCustomEvent 事件。
    • HandleCustomEvent 是事件处理方法,当事件被触发时会执行该方法,并接收传递过来的 CustomEventArgs 对象。
  4. Program 类:

    • 创建 PublisherSubscriber 实例,并调用 DoSomething 方法来触发事件。

通过这个例子,你可以看到如何在 C# 中使用 EventArgs 来传递事件数据,并实现发布-订阅模式。

上一篇:c# textbox

下一篇:c#webapi

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站