基于 C# 开源的轻量级事件总线

892361136d44903c88e52d2696ce411d.png

fad4947a7df8c92b809710a12a9b5b5f.gif

dac3bba4605b2b1ce8f3a73e5b89cf3a.png

欢迎来到 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());

往期推荐:

异步编程是 .NET 架构师的必修课

基于 C# 开源一个IP地址分配管理系统

小幻助理 - 使用 C# 开发的个人 AI 神器

开源一个 C# 开发的局域网的实时聊天项目

美观高效,Winform 也能用 Ant Design 组件库了!

项目地址

https://github.com/ShimizuShiori/EventBus

7fe164c2d2b7ac5f8b4fba1fbe5a91d7.png

a6b16e462cbc1ced63327093ad018434.png

分享

9a566880de24efe562916b716ea2ad71.png

点收藏 

7c03bcca16b9ddb523134f92d4089ca5.png

点点赞

259f282d32e0daae39ffad4028625369.png

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值