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();
}
}
}
CustomEventArgs 类:
EventArgs
,用于传递自定义的数据(如 Message
)。Publisher 类:
CustomEvent
,使用 EventHandler<CustomEventArgs>
泛型委托。OnCustomEvent
方法用于触发事件,并传递 CustomEventArgs
对象。DoSomething
方法模拟了某个操作完成后触发事件的行为。Subscriber 类:
Publisher
的 CustomEvent
事件。HandleCustomEvent
是事件处理方法,当事件被触发时会执行该方法,并接收传递过来的 CustomEventArgs
对象。Program 类:
Publisher
和 Subscriber
实例,并调用 DoSomething
方法来触发事件。通过这个例子,你可以看到如何在 C# 中使用 EventArgs
来传递事件数据,并实现发布-订阅模式。
上一篇:c# textbox
下一篇:c#webapi
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站