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