在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
和一個事件OnEvent
。PublishEvent
方法用于觸發事件。
EventSubscriber
類包含了一個Subscribe
方法和一個Unsubscribe
方法,用于訂閱和取消訂閱事件。HandleEvent
方法用于處理事件。
在Main
方法中,創建了一個EventPublisher
實例和一個EventSubscriber
實例。通過調用Subscribe
方法訂閱事件,并通過調用PublishEvent
方法觸發事件。最后調用Unsubscribe
方法取消訂閱事件。