在C#中實現事件總線(Event Bus)的訂閱與發布機制,可以使用委托和事件來實現。下面是一個簡單的示例代碼:
using System;
public class EventBus
{
public event EventHandler<EventArgs> EventOccurred;
public void PublishEvent()
{
OnEventOccurred(EventArgs.Empty);
}
protected virtual void OnEventOccurred(EventArgs e)
{
EventOccurred?.Invoke(this, e);
}
}
public class Subscriber
{
public Subscriber(EventBus eventBus)
{
eventBus.EventOccurred += HandleEvent;
}
private void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("Event occurred!");
}
}
public class Program
{
public static void Main()
{
EventBus eventBus = new EventBus();
Subscriber subscriber = new Subscriber(eventBus);
eventBus.PublishEvent();
}
}
在這個示例中,EventBus類包含一個事件EventOccurred,用于發布事件。Subscriber類訂閱了EventOccurred事件,并在事件發生時執行HandleEvent方法。在Main方法中,創建了一個EventBus實例和一個Subscriber實例,然后調用EventBus的PublishEvent方法來發布事件。當事件發生時,Subscriber會接收到事件并輸出"Event occurred!"。
通過這種方式,可以實現簡單的事件總線機制,用于實現發布訂閱模式。在實際應用中,可以根據需要擴展事件和訂閱者的功能,實現更復雜的事件處理邏輯。