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. 我的编程经历,从天桥地摊Basic到西藏阿里的.Net AOT。(一,从井到Sharp)

    撇清一层歧义:标题中的阿里不是指阿里巴巴集团,喜马拉雅也不是指那个做音频频道的公司,文中所及内容以及我本人都与他们没有任何关联.依照地理正式名称:阿里指的是西藏西部阿里地区,喜马拉雅指的是青藏高原地球 ...

  2. 对比python学julia(第一章)--(第四节)冰雹猜想

    4.1 依葫芦画瓢 冰雹猜想是一种非常有趣的数字黑洞,曾让无数的数学爱好者为之痴迷.它有一个非常简单的变换规则,具体来说就是:任意取一个正整数n,如果n是偶数,就把n变成n/2;如果n是奇数,就把n变 ...

  3. 【RabbitMQ】07 SpringBoot整合RabbitMQ

    生产者和消费者的依赖基本一致: 注意工程名称不是一样的 <?xml version="1.0" encoding="UTF-8"?> <pro ...

  4. 【JS】06 语法补充

    严格模式(use strict) 其实就是就是对JS随意的语法做一个强制规范要求 开启严格模式: "use strict"; 注意,只有在第一行声明才会有效,. 否则在严格模式之前 ...

  5. 人形机器人(具身智能,Embodied Intelligence)—— 抓取动作(上半身动作规划)的各大公司技术路线

    视频地址: https://www.youtube.com/watch?v=UZBSXzNKB1Q

  6. 《Python数据可视化之matplotlib实践》 源码 第一篇 入门 第二章

    图 2.1 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['font.sans-serif']=['Sim ...

  7. 国产深度学习框架吸引用户的一种免费手段——免费GPU时长

    国产的深度学习框架基本成为了一个头部公司的标配了,不论是阿里.百度还是华为都推出了自己的深度学习框架,这几家公司为了吸引用户也都采取了免费使用GPU的活动,但是与阿里.百度的不同,华为是与固定的高校的 ...

  8. 023.Ubuntu常见个性化配置

    root登录设置 ubuntu默认关闭了root账户,可根据实际情况开启或关闭root登录. ubuntu@localhost:~$ sudo apt install openssh-server u ...

  9. rk3568 | rk平台GPIO冲突检测小技巧

    上一篇我们讲解了如何编写gpio驱动,但是实际操作中,经常发现gpio引脚被占用的情况发生,那么本篇文章就详细讲解rxw平台下如何快速定位gpio复用问题以及如何解决. 一.GPIO寄存器查找 要想查 ...

  10. 电子行业MES系统流程图梳理