using Flyshot.Core.Config;
using Flyshot.Runtime.Common;
using Flyshot.Runtime.Fanuc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Flyshot.ControllerClientCompat;
///
/// 提供 ControllerClient HTTP 兼容层的依赖注入注册入口。
///
public static class ControllerClientCompatServiceCollectionExtensions
{
///
/// 将 HTTP-only 的 ControllerClient 兼容服务注册到当前宿主。
///
/// 当前宿主服务集合。
/// 宿主配置根。
/// 同一服务集合,便于链式调用。
public static IServiceCollection AddControllerClientCompat(this IServiceCollection services, IConfiguration configuration)
{
ArgumentNullException.ThrowIfNull(services);
ArgumentNullException.ThrowIfNull(configuration);
services
.AddOptions()
.Bind(configuration.GetSection("ControllerClientCompat"));
services.AddSingleton(static serviceProvider => serviceProvider.GetRequiredService>().Value);
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
return services;
}
}