|
|
|
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;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 命令服务扩展方法
|
|
|
|
/// </summary>
|
|
|
|
public static class CommandServiceExtensions
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// 添加命令相关的自定义服务
|
|
|
|
/// </summary>
|
|
|
|
/// <remarks>
|
|
|
|
/// 此方法注册以下服务:
|
|
|
|
/// 1. 网络IP端点管理器(单例)
|
|
|
|
/// 2. 蜂窝网络上下文(单例)
|
|
|
|
/// 3. 系统命令执行器工厂(单例)
|
|
|
|
/// 4. 系统命令执行器(瞬时)
|
|
|
|
/// 5. 网络配置仓储(作用域)
|
|
|
|
/// 6. 网络配置服务(作用域)
|
|
|
|
/// 7. 网络配置复制器(作用域)
|
|
|
|
/// 8. 网络接口管理器(作用域)
|
|
|
|
/// 9. 网络状态监控器(作用域)
|
|
|
|
/// 10. 蜂窝网络服务(作用域)
|
|
|
|
/// </remarks>
|
|
|
|
/// <param name="services">服务集合</param>
|
|
|
|
/// <returns>服务集合</returns>
|
|
|
|
public static IServiceCollection AddCommandCustomService(this IServiceCollection services)
|
|
|
|
{
|
|
|
|
// 注册单例服务
|
|
|
|
services.AddSingleton<INetworkIPEndPointManager, NetworkIPEndPointManager>();
|
|
|
|
services.AddSingleton<ICellularNetworkContext, CellularNetworkContext>();
|
|
|
|
services.AddSingleton<ISystemCommandExecutorFactory, SystemCommandExecutorFactory>();
|
|
|
|
|
|
|
|
// 注册命令执行器(瞬时)
|
|
|
|
services.AddTransient<ISystemCommandExecutor>(sp =>
|
|
|
|
{
|
|
|
|
var factory = sp.GetRequiredService<ISystemCommandExecutorFactory>();
|
|
|
|
return factory.CreateExecutor();
|
|
|
|
});
|
|
|
|
|
|
|
|
// 注册作用域服务
|
|
|
|
services.AddScoped<INetworkConfigurationRepository, NetworkConfigurationRepository>();
|
|
|
|
services.AddScoped<INetworkConfigurationService, NetworkConfigurationService>();
|
|
|
|
services.AddScoped<INetworkConfigCopier, NetworkConfigCopier>();
|
|
|
|
services.AddScoped<INetworkInterfaceManager, NetworkInterfaceManager>();
|
|
|
|
services.AddScoped<INetworkStatusMonitor, NetworkStatusMonitor>();
|
|
|
|
services.AddScoped<ICellularNetworkService, CellularNetworkService>();
|
|
|
|
|
|
|
|
return services;
|
|
|
|
}
|
|
|
|
}
|