Yuebon.NetCore/Yuebon.Commons/EventBus/InMemoryEventBusSubscriptionsManager.cs
(开头部分) 7KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Yuebon.Commons.EventBus.Abstractions;
using Yuebon.Commons.EventBus.Events;
namespace Yuebon.Commons.EventBus;
/// <summary>
/// 基于内存
/// 事件总线订阅管理器
/// </summary>
public partial class InMemoryEventBusSubscriptionsManager : IEventBusSubscriptionsManager
{
/// <summary>
/// 定义事件的名称和时间订阅的字典映射(1:N)
/// </summary>
private readonly Dictionary<string, List<SubscriptionInfo>> _handlers;
/// <summary>
/// 保存所有事件的处理类型
/// </summary>
private readonly List<Type> _eventTypes;
/// <summary>
/// 定义事件移除后的事件
/// </summary>
public event EventHandler<string> OnEventRemoved;
/// <summary>
///
/// </summary>
public InMemoryEventBusSubscriptionsManager()
{
_handlers = new Dictionary<string, List<SubscriptionInfo>>();
_eventTypes = new List<Type>();
}
/// <summary>
/// 是否为空
/// </summary>
public bool IsEmpty => _handlers is { Count: 0 };
/// <summary>
/// 清除
/// </summary>
public void Clear() => _handlers.Clear();
/// <summary>
/// 添加订阅
/// </summary>
/// <typeparam name="TH">约束:动态事件处理器接口</typeparam>
/// <param name="eventName">事件名称</param>
public void AddDynamicSubscription<TH>(string eventName)
where TH : IDynamicIntegrationEventHandler
{
DoAddSubscription(typeof(TH), eventName, isDynamic: true);
}
/// <summary>
/// 添加订阅
/// </summary>
/// <typeparam name="T">约束:事件</typeparam>
/// <typeparam name="TH">约束:动态事件处理器接口</typeparam>
public void AddSubscription<T, TH>()
where T : IntegrationEvent
where TH : IIntegrationEventHandler<T>
{
var eventName = GetEventKey<T>();
后面还有 178 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。