欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!
EventBus
推荐一个使用 .NET 开发的轻量级消息总线 EventBus,这是一个参照 Java Spring 中的 ApplicationContext.publish(message) 的方法实现的事件总线。
直接使用 Nuget 安装即可,开箱即用。
如何使用?
如何发布消息?
首先需要定义一个事件, 如下
/// <summary>
/// 控制台启动后的事件
/// </summary>
public class ConsoleStarted : Reface.EventBus.Event
{
public ConsoleStarted(object source) : base(source)
{
Console.WriteLine("控件台启动完毕");
}
}
在控制台启动后触发事件
class Program
{
static void Main(string[] args)
{
// 构造事件总线
IEventBus eventBus = new DefaultEventBus();
// 发布消息
eventBus.Publish(new ConsoleStarted());
}
}
如何进行消息监听?
实现 IEventListener 即可成为监听者
using ConsoleApp1.Events;
using Reface.EventBus;
namespace ConsoleApp1.Listeners
{
public class OnConsoleStarted : IEventListener<ConsoleStarted>
{
public void Handle(ConsoleStarted @event)
{
Console.WriteLine("Console Started");
}
}
}
EventBus 和 IOC/DI 组件集成,可以免去对监听者一一注册的过程。 在 .NetCore 中,通过为 ServiceCollection 注册必要组件和按程序集注册监听器,可以实现这些功能:
var provider = new ServiceCollection()
.AddEventBus() // 添加 EventBus 功能
.AddEventListeners(this.GetType().Assembly)
.AddEventListeners(typeof(IService).Assembly)
.BuildServiceProvider();
IEventBus eventBus = provider.GetService<IEventBus>();
eventBus.Publish(new TestEvent());
往期推荐:
美观高效,Winform 也能用 Ant Design 组件库了!
项目地址
https://github.com/ShimizuShiori/EventBus
分享
点收藏
点点赞
点在看