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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。