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