GwWuYou 157b3ce846 refactor(events): 将类型事件系统重构为事件总线
- 将TypeEventSystem重命名为EventBus
- 将IEasyEvent接口重命名为IEvent接口
- 将ITypeEventSystem接口重命名为IEventBus接口
- 更新Architecture类中使用TypeEventSystem为EventBus
- 更新ArchitectureContext中依赖注入参数类型
- 将EasyEvent泛型类重命名为Event泛型类
- 更新所有相关类型引用和实现
- 修改接口继承关系以使用新的事件接口命名
2026-01-11 11:17:30 +08:00

55 lines
1.6 KiB
C#

using GFramework.Core.Abstractions.events;
namespace GFramework.Core.events;
/// <summary>
/// 类型事件系统,提供基于类型的事件发送、注册和注销功能
/// </summary>
public class EventBus : IEventBus
{
private readonly EasyEvents _mEvents = new();
/// <summary>
/// 发送事件,自动创建事件实例
/// </summary>
/// <typeparam name="T">事件类型,必须具有无参构造函数</typeparam>
public void Send<T>() where T : new()
{
_mEvents
.GetOrAddEvent<Event<T>>()
.Trigger(new T());
}
/// <summary>
/// 发送指定的事件实例
/// </summary>
/// <typeparam name="T">事件类型</typeparam>
/// <param name="e">事件实例</param>
public void Send<T>(T e)
{
_mEvents
.GetOrAddEvent<Event<T>>()
.Trigger(e);
}
/// <summary>
/// 注册事件监听器
/// </summary>
/// <typeparam name="T">事件类型</typeparam>
/// <param name="onEvent">事件处理回调函数</param>
/// <returns>反注册接口,用于注销事件监听</returns>
public IUnRegister Register<T>(Action<T> onEvent)
{
return _mEvents.GetOrAddEvent<Event<T>>().Register(onEvent);
}
/// <summary>
/// 注销事件监听器
/// </summary>
/// <typeparam name="T">事件类型</typeparam>
/// <param name="onEvent">要注销的事件处理回调函数</param>
public void UnRegister<T>(Action<T> onEvent)
{
_mEvents.GetEvent<Event<T>>().UnRegister(onEvent);
}
}