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();
}
}