using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web.Http.Dependencies;
using CncRepository.Base;
using CncRepository.Interface;
using CncService.Interface;
using CncWebApi.Controllers;
namespace CncWebApi.Infrastructure
{
///
/// 简单的依赖注入解析器
/// 手动注册 Repository 和 Service 的映射关系
///
public class ServiceResolver : IDependencyResolver
{
private static readonly string _businessConn = ConfigurationManager.ConnectionStrings["BusinessConnection"]?.ConnectionString;
private static readonly string _logConn = ConfigurationManager.ConnectionStrings["LogConnection"]?.ConnectionString;
private static readonly string _jwtSecret = ConfigurationManager.AppSettings["JwtSecret"];
///
public IDependencyScope BeginScope()
{
return this;
}
///
public object GetService(Type serviceType)
{
// Controller 解析
if (serviceType == typeof(Controllers.AuthController))
return new Controllers.AuthController(
ResolveAuthService());
if (serviceType == typeof(Controllers.DashboardController))
return new Controllers.DashboardController(
ResolveDashboardService());
if (serviceType == typeof(Controllers.MachineController))
return new Controllers.MachineController(
ResolveMachineService());
if (serviceType == typeof(Controllers.BrandController))
return new Controllers.BrandController(
ResolveBrandService());
if (serviceType == typeof(Controllers.CollectAddressController))
return new Controllers.CollectAddressController(
ResolveCollectAddressService());
if (serviceType == typeof(Controllers.WorkerController))
return new Controllers.WorkerController(
ResolveWorkerService());
if (serviceType == typeof(Controllers.ProductionController))
return new Controllers.ProductionController(
ResolveProductionService());
if (serviceType == typeof(Controllers.AlertController))
return new Controllers.AlertController(
ResolveAlertService());
if (serviceType == typeof(Controllers.SettingsController))
return new Controllers.SettingsController(
new CncRepository.Impl.SysConfigRepository(_businessConn),
ResolveWorkshopService());
if (serviceType == typeof(Controllers.LogController))
return new Controllers.LogController(
ResolveSystemLogService(),
ResolveProductionAdjustmentRepository());
if (serviceType == typeof(Controllers.ReplayController))
return new Controllers.ReplayController(ResolveReplayService());
if (serviceType == typeof(Controllers.ScreenConfigController))
return new Controllers.ScreenConfigController(
ResolveScreenService());
if (serviceType == typeof(Controllers.ScreenController))
return new Controllers.ScreenController(
ResolveDashboardService(),
ResolveScreenService(),
new CncRepository.Impl.SysConfigRepository(_businessConn));
if (serviceType == typeof(Controllers.OptionController))
return new Controllers.OptionController(
ResolveWorkshopService(),
ResolveBrandService(),
ResolveMachineService(),
ResolveWorkerService(),
ResolveCollectAddressService());
if (serviceType == typeof(Controllers.HealthController))
return new Controllers.HealthController();
if (serviceType == typeof(Controllers.CollectLogController))
return new Controllers.CollectLogController(
ResolveCollectLogService(),
new CncRepository.Impl.Log.CollectRawRepository(_logConn));
return null;
}
///
public IEnumerable