using CoreAgent.Domain.Interfaces; using CoreAgent.Domain.Interfaces.Network; using CoreAgent.Domain.Interfaces.System.Command; using CoreAgent.Infrastructure.Command.Factories; using CoreAgent.Infrastructure.Contexts; using CoreAgent.Infrastructure.Repositories; using CoreAgent.Infrastructure.Services; using CoreAgent.Infrastructure.Services.Network; using Microsoft.Extensions.DependencyInjection; namespace CoreAgent.Infrastructure.Extensions.ServiceCollection; /// /// 命令服务扩展方法 /// public static class CommandServiceExtensions { /// /// 添加命令相关的自定义服务 /// /// /// 此方法注册以下服务: /// 1. 网络IP端点管理器(单例) /// 2. 蜂窝网络上下文(单例) /// 3. 系统命令执行器工厂(单例) /// 4. 系统命令执行器(瞬时) /// 5. 网络配置仓储(作用域) /// 6. 网络配置服务(作用域) /// 7. 网络配置复制器(作用域) /// 8. 网络接口管理器(作用域) /// 9. 网络状态监控器(作用域) /// 10. 蜂窝网络服务(作用域) /// /// 服务集合 /// 服务集合 public static IServiceCollection AddCommandCustomService(this IServiceCollection services) { // 注册单例服务 services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); // 注册命令执行器(瞬时) services.AddTransient(sp => { var factory = sp.GetRequiredService(); return factory.CreateExecutor(); }); // 注册作用域服务 services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); return services; } }