using Microsoft.Extensions.Configuration; namespace web.tools; public class settingHelper { public static IConfiguration _config { get; set; } public settingHelper(IConfiguration configuration) { _config = configuration; } /// <summary> /// 过期偏移时间 /// </summary> public static int ClockSkew => Convert.ToInt32(Get("JwtClockSkew")); /// <summary> /// 获取配置文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public static T? Get<T>(string key) where T : class, new() { var model = new T(); _config.Bind(key, model); return model; } public static string Get(string key) { try { return _config[key]; } catch { return null; } } public static string Get(string key, bool IsConn = false) { string value; try { if (IsConn) { value = _config.GetConnectionString(key); } else { value = _config[key]; } } catch (Exception) { value = null; } return value; } public static IConfigurationSection GetSection(string key) { try { return _config.GetSection(key); } catch { return null; } } }
配置工具类的注册和使用
var builder = WebApplication.CreateBuilder(args); // Add services to the container. // 引入配置文件 var basePath = AppContext.BaseDirectory; var path = Path.Combine(basePath, "Files"); var _config = new ConfigurationBuilder() .SetBasePath(basePath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); // SetBasePath 将基于文件的提供程序的 FileProvider 设置为具有基路径的 PhysicalFileProvider。 // AddJsonFile 将 JSON 配置源添加到 builder。 // Build 使用在 Sources 中注册的提供程序集中的 键和值 生成. builder.Services.AddSingleton(new settingHelper(_config)); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // app 是 WebApplication对象 //WebApplication 类 //ASP.NET Core 有3个 Host 类,是ASP.NET Core中用于初始化,生命周期管理,启动Web 服务的最重要的类。所以详细重点分析一下这几个类,分别是: //WebApplication,ASP.NET Core 6 引入的替代WebHost的类,可以用于 Web App或者 Web API //Host,非 Web App或者Web API 使用的 Host 类,比如纯控制台,或者 Windows Service。 //WebHost,ASP.NET Core 6之前的版本使用的Host类。 // WebApplication 2 个静态方法 //CreateBuilder(),用于创建WebApplicationBuilder 对象,再用 Build 模式添加一些中间件,再创建WebApplication对象。 //Create(),用于直接创建一个WebApplication对象,会默认添加和配置一些中间件。 //MapGet(),模式匹配 HTTP Get请求,映射到某个endpoint。 app.MapGet("/", () => "Hello World!"); // 通过 WebApplication对象 添加内置的或者自定义的中间件 // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } var isUseSwagger = settingHelper.Get("UseSwagger"); // 获取是否启用 Swagger 选项 var conn = settingHelper.Get("ConnectionStrings:SugarConnectString"); // 使用Get获取字符串中的数据库连接字符串 var conn1 = settingHelper.Get("SqlDbType",true); // 获取数据库类型 如果第二个参数 true 直接获取 ConnectionStrings 里面key值 app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();标签:封装,Get,app,var,key,dotnet,工具,config,public From: https://www.cnblogs.com/zhulongxu/p/18222549