using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.DependencyInjection; using System.Collections.Generic; namespace Kean.Infrastructure.SignalR { /// /// Hub 集合 /// public sealed class HubCollection { private readonly IServiceCollection _services; private readonly IList _list = new List(); /// /// 初始化 Kean.Infrastructure.SignalR.HubCollection 类的新实例 /// /// 服务描述符 internal HubCollection(IServiceCollection services) => _services = services; /// /// 添加 Hub /// /// Hub 类型 public void Add() where THub : Hub { _services.AddScoped(); _list.Add(new HubMapper()); } /// /// 添加 Hub /// /// 服务类型 /// Hub 类型 public void Add() where TService : class where THub : Hub, TService { _services.AddScoped(); _list.Add(new HubMapper()); } /// /// 返回一个循环访问 Hub 映射器集合的枚举器 /// /// 用于循环访问集合的枚举数 public IEnumerator GetEnumerator() => _list.GetEnumerator(); } }