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();

dotnet封装一个配置工具类的更多相关文章

  1. 关于TornadoFx和Android的全局配置工具类封装实现及思路解析

    原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...

  2. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  3. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  4. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  5. 封装一个Ajax工具函数

    /*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type   string   请求的方式  默认是get * 2. url     ...

  6. 分享一个Snackbar工具类 SnackbarUtils;

    分享一个Snackbar工具类,源代码也是在Github上面找的,自己做了一下修改: 功能如下: 1:设置Snackbar显示时间长短                 1.1:Snackbar.LEN ...

  7. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  8. Python_selenium封装一个浏览器引擎类

    Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控 ...

  9. springboot封装JsonUtil,CookieUtil工具类

    springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...

  10. 编写Java程序,创建一个数学工具类,将该类设计为final类,Final 修饰符的使用。

    返回本章节 返回作业目录 需求说明: 创建一个数学工具类. 将该类设计为final类. 将该类的构造方法的访问权限定义为私有,以防止外界实例化该类. 在该类定义静态double类型常量π,其值为3.1 ...

随机推荐

  1. Jmeter函数助手10-regexFunction

    regexFunction函数用于对上一个请求进行正则表达式提取处理,类似正则表达式. 用于从前一个请求搜索结果的正则表达式:填入正则表达式 Template for the replacement ...

  2. 硬件开发笔记(二十九):TPS54331电源设计(二):12V转3.3V和12V转4V原理图设计

    前言   电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来.  紧接前一篇12V转5V的,本篇设计常用的12V转3.3V电路,不常用的12V转4V电路.   ...

  3. 对比python学julia(第二章)--(第一节)隔沟算样—枚举策略

    1.1.  问题描述 在明代数学家程大位的<算法统宗>著作中记载了这样一道数学题: 甲乙隔沟放牧,二人暗里参详. 甲云得乙九个羊,多你一倍之上. 乙说得甲九只,两家之数相当. 两边闲坐恼心 ...

  4. 【转载】 深入理解TensorFlow中的tf.metrics算子

    原文地址: https://mp.weixin.qq.com/s/8I5Nvw4t2jT1NR9vIYT5XA ============================================ ...

  5. 【转载】 CUDA中的Unified Memory

    为了结合上篇 文章   https://www.cnblogs.com/devilmaycry812839668/p/13264080.html 对RTX显卡是否能够实现P2P通信功能,同时专业级别显 ...

  6. win10开启窗口左右分屏方法

    首先进入导航栏(等同于按下win徽标): 之后点击电源键上的"设置": 进入"系统" 左边一栏里点击"多任务处理" 打开"贴靠窗囗 ...

  7. springcloud config坑系列一之Connection pool shut down on "zuul.host.*" property change

    在使用springcloud config自动刷新功能难免会踩到一些坑,下面来介绍下 在生成中经常需要动态刷新配置,只需要增加@RefreshScope,并且执行手动刷新链接/actuator/ref ...

  8. C#实现国产Linux视频录制生成mp4(附源码,银河麒麟、统信UOS)

    随着信创国产化浪潮的来临,在国产操作系统上的应用开发的需求越来越多,最近有个客户需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音,将它们录制成一个mp4文件.那么这样的功能要如何实现了? 一 ...

  9. zabbix snmp OID 列表

    系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...

  10. vscode注释快捷键

    单行注释 ctrl+/ 多行注释 ctrl+alt+a 文档注释 /** 复制上面一行 ctrl+d 选中段落整体向左或向右缩进 ctrl +[ 或 ctrl + ] 查找 ctrl + f