using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Seyounth.Auto.Hs.Runtime.Balances; using Seyounth.Auto.Hs.Runtime.Handlers; using Seyounth.Auto.Hs.Runtime.Plc; using Seyounth.Auto.Hs.Runtime.Printer; using Seyounth.Auto.Hs.Runtime.Scanner; using Seyounth.Auto.Plc.Business; using Seyounth.Extensions.Plc; namespace Seyounth.Auto.Hs.Runtime; public static class HsExtensions { /// /// 添加HS手动包装服务 /// /// /// 报警信息处理器 /// 纸箱称重处理器 /// 丝锭称重处理器 /// public static IServiceCollection AddHs( this IServiceCollection services) where TOnWarningHandler : OnWarningHandler where TWeighBoxRequestHandler : WeighSpindleRequestHandler where TWeighSpindleRequestHandler : WeighSpindleRequestHandler { services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton((serviceProvider) => { var configuration = serviceProvider.GetService(); var deviceConnectConfig = configuration.GetSection("Plc").Get(); return new SycModbusTcpNet(deviceConnectConfig.IP, deviceConnectConfig.Port); }); #region 接口调试阶段先注释 //services.AddHostedService(); //services.AddHostedService(); #endregion services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(typeof(OnWarningHandler).Assembly); }); return services; } public static IServiceCollection AddScannerEventHandle( this IServiceCollection services) where TOnWarningHandler :class,IScannerEventHandle { services.AddTransient(); return services; } public static IServiceCollection AddBalanceEventHandle( this IServiceCollection services) where TOnWarningHandler : class, IBalanceEventHandle { services.AddTransient(); return services; } }