From 0fb0f17319ecf71d66b96a6acfd07f754be9443e Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 24 十月 2024 13:44:38 +0800
Subject: [PATCH] WCS添加穿梭车信息表,修改任务信息表
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs | 66 +++++++++++++++++++++++++++++++++
1 files changed, 66 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs"
new file mode 100644
index 0000000..a313a78
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs"
@@ -0,0 +1,66 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+ public static class ConfigurableOptions
+ {
+ /// <summary>娣诲姞閫夐」閰嶇疆</summary>
+ /// <typeparam name="TOptions">閫夐」绫诲瀷</typeparam>
+ /// <param name="services">鏈嶅姟闆嗗悎</param>
+ /// <returns>鏈嶅姟闆嗗悎</returns>
+ public static IServiceCollection AddConfigurableOptions<TOptions>(this IServiceCollection services)
+ where TOptions : class, IConfigurableOptions
+ {
+ Type optionsType = typeof(TOptions);
+ string path = GetConfigurationPath(optionsType);
+ services.Configure<TOptions>(App.Configuration.GetSection(path));
+
+ return services;
+ }
+
+ public static IServiceCollection AddConfigurableOptions(this IServiceCollection services, Type type)
+ {
+ string path = GetConfigurationPath(type);
+ var config = App.Configuration.GetSection(path);
+
+ Type iOptionsChangeTokenSource = typeof(IOptionsChangeTokenSource<>);
+ Type iConfigureOptions = typeof(IConfigureOptions<>);
+ Type configurationChangeTokenSource = typeof(ConfigurationChangeTokenSource<>);
+ Type namedConfigureFromConfigurationOptions = typeof(NamedConfigureFromConfigurationOptions<>);
+ iOptionsChangeTokenSource = iOptionsChangeTokenSource.MakeGenericType(type);
+ iConfigureOptions = iConfigureOptions.MakeGenericType(type);
+ configurationChangeTokenSource = configurationChangeTokenSource.MakeGenericType(type);
+ namedConfigureFromConfigurationOptions = namedConfigureFromConfigurationOptions.MakeGenericType(type);
+
+ services.AddOptions();
+ services.AddSingleton(iOptionsChangeTokenSource,
+ Activator.CreateInstance(configurationChangeTokenSource, Options.DefaultName, config) ?? throw new InvalidOperationException());
+ return services.AddSingleton(iConfigureOptions,
+ Activator.CreateInstance(namedConfigureFromConfigurationOptions, Options.DefaultName, config) ?? throw new InvalidOperationException());
+ }
+
+ /// <summary>鑾峰彇閰嶇疆璺緞</summary>
+ /// <param name="optionsType">閫夐」绫诲瀷</param>
+ /// <returns></returns>
+ public static string GetConfigurationPath(Type optionsType)
+ {
+ var endPath = new[] { "Option", "Options" };
+ var configurationPath = optionsType.Name;
+ foreach (var s in endPath)
+ {
+ if (configurationPath.EndsWith(s))
+ {
+ return configurationPath[..^s.Length];
+ }
+ }
+
+ return configurationPath;
+ }
+ }
+}
--
Gitblit v1.9.3