using Microsoft.Extensions.DependencyInjection; using System; namespace Kean.Infrastructure.SignalR { /// <summary> /// ServiceCollection 扩展方法 /// </summary> public static class ServiceCollectionExtensions { /// <summary> /// 向服务描述中追加 SignalR 配置 /// </summary> /// <param name="services">服务描述符</param> /// <param name="setupAction">配置项</param> /// <returns>服务描述符</returns> public static IServiceCollection AddSignalR(this IServiceCollection services, Action<SignalROptions> setupAction) { services.AddSignalR(); var options = new SignalROptions { Hubs = new(services) }; setupAction.Invoke(options); return services.AddTransient(_ => options.Hubs); } } }