using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using OrpaonVision.Core.Security; using OrpaonVision.SiteApp.Runtime.Contracts; using OrpaonVision.SiteApp.Runtime.Options; using OrpaonVision.SiteApp.Runtime.Services; using OrpaonVision.SiteApp.ViewModels; using OrpaonVision.ConfigApp.Infrastructure.Services; namespace OrpaonVision.SiteApp.DependencyInjection { /// /// SiteApp 服务注册扩展。 /// public static class ServiceCollectionExtensions { /// /// 注册运行端 MVP 相关服务。 /// public static IServiceCollection AddSiteAppServices(this IServiceCollection services, IConfiguration configuration) { var runtimeOptions = new RuntimeOptions(); configuration.GetSection("Runtime").Bind(runtimeOptions); services.AddSingleton(runtimeOptions); // 配置海康相机选项 var hikCameraOptions = new HikCameraOptions(); configuration.GetSection("HikCamera").Bind(hikCameraOptions); services.AddSingleton(Options.Create(hikCameraOptions)); // 配置YOLO推理选项 var yoloOptions = new YoloInferenceOptions(); configuration.GetSection("YoloInference").Bind(yoloOptions); services.AddSingleton(Options.Create(yoloOptions)); // 注册运行时服务工厂 services.AddSingleton(); // 注册真实和模拟海康相机服务 services.AddSingleton(); services.AddSingleton(); // 注册真实和模拟YOLO推理服务 services.AddSingleton(); services.AddSingleton(); // 使用工厂模式注册主要服务 services.AddSingleton(provider => provider.GetRequiredService().CreateHikCameraService()); services.AddSingleton(provider => provider.GetRequiredService().CreateYoloInferenceService()); // 使用海康相机适配器替换Mock实现 services.AddSingleton(); // 使用YOLO推理适配器替换Mock实现 services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); // 机种权限和切换管理服务 services.AddSingleton(); services.AddSingleton(); // 图像处理服务 services.AddSingleton(); services.AddSingleton(); // 一致性检查服务 services.AddSingleton(); // 日志 services.AddLogging(builder => { builder.AddConsole(); builder.AddDebug(); }); return services; } } }