c#

如何通过c#委托实现事件发布/订阅

小樊
130
2024-07-01 09:27:43
栏目: 编程语言

在C#中,可以通过委托来实现事件的发布和订阅。以下是一个简单的示例代码:

using System;

public class EventPublisher
{
    public delegate void EventHandler(string message);
    public event EventHandler OnEvent;

    public void PublishEvent(string message)
    {
        OnEvent?.Invoke(message);
    }
}

public class EventSubscriber
{
    public void Subscribe(EventPublisher publisher)
    {
        publisher.OnEvent += HandleEvent;
    }

    public void Unsubscribe(EventPublisher publisher)
    {
        publisher.OnEvent -= HandleEvent;
    }

    public void HandleEvent(string message)
    {
        Console.WriteLine("Event received: " + message);
    }
}

public class Program
{
    public static void Main()
    {
        EventPublisher publisher = new EventPublisher();
        EventSubscriber subscriber = new EventSubscriber();

        subscriber.Subscribe(publisher);

        publisher.PublishEvent("Hello World");

        subscriber.Unsubscribe(publisher);

        publisher.PublishEvent("Goodbye World");
    }
}

在这个示例中,EventPublisher类包含了一个委托EventHandler和一个事件OnEventPublishEvent方法用于触发事件。

EventSubscriber类包含了一个Subscribe方法和一个Unsubscribe方法,用于订阅和取消订阅事件。HandleEvent方法用于处理事件。

Main方法中,创建了一个EventPublisher实例和一个EventSubscriber实例。通过调用Subscribe方法订阅事件,并通过调用PublishEvent方法触发事件。最后调用Unsubscribe方法取消订阅事件。

0
看了该问题的人还看了