在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!"。
通过这种方式,可以实现简单的事件总线机制,用于实现发布订阅模式。在实际应用中,可以根据需要扩展事件和订阅者的功能,实现更复杂的事件处理逻辑。