1. using Microsoft.Extensions.Configuration;
  2.  
  3. namespace web.tools;
  4. public class settingHelper
  5. {
  6. public static IConfiguration _config { get; set; }
  7. public settingHelper(IConfiguration configuration)
  8. {
  9. _config = configuration;
  10. }
  11.  
  12. /// <summary>
  13. /// 过期偏移时间
  14. /// </summary>
  15. public static int ClockSkew => Convert.ToInt32(Get("JwtClockSkew"));
  16.  
  17. /// <summary>
  18. /// 获取配置文件
  19. /// </summary>
  20. /// <typeparam name="T"></typeparam>
  21. /// <param name="key"></param>
  22. /// <returns></returns>
  23. public static T? Get<T>(string key)
  24. where T : class, new()
  25. {
  26. var model = new T();
  27. _config.Bind(key, model);
  28. return model;
  29. }
  30.  
  31. public static string Get(string key)
  32. {
  33. try
  34. {
  35. return _config[key];
  36. }
  37. catch
  38. {
  39. return null;
  40. }
  41. }
  42. public static string Get(string key, bool IsConn = false)
  43. {
  44. string value;
  45. try
  46. {
  47. if (IsConn)
  48. {
  49. value = _config.GetConnectionString(key);
  50. }
  51. else
  52. {
  53. value = _config[key];
  54. }
  55. }
  56. catch (Exception)
  57. {
  58. value = null;
  59. }
  60. return value;
  61. }
  62. public static IConfigurationSection GetSection(string key)
  63. {
  64. try
  65. {
  66. return _config.GetSection(key);
  67. }
  68. catch
  69. {
  70. return null;
  71. }
  72. }
  73.  
  74. }

配置工具类的注册和使用

  1. var builder = WebApplication.CreateBuilder(args);
  2.  
  3. // Add services to the container.
  4.  
  5. // 引入配置文件
  6. var basePath = AppContext.BaseDirectory;
  7. var path = Path.Combine(basePath, "Files");
  8. var _config = new ConfigurationBuilder()
  9. .SetBasePath(basePath)
  10. .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  11. .Build();
  12. // SetBasePath 将基于文件的提供程序的 FileProvider 设置为具有基路径的 PhysicalFileProvider。
  13. // AddJsonFile 将 JSON 配置源添加到 builder。
  14. // Build 使用在 Sources 中注册的提供程序集中的 键和值 生成.
  15. builder.Services.AddSingleton(new settingHelper(_config));
  16.  
  17. builder.Services.AddControllers();
  18. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  19. builder.Services.AddEndpointsApiExplorer();
  20. builder.Services.AddSwaggerGen();
  21. var app = builder.Build(); // app 是 WebApplication对象
  22. //WebApplication 类
  23. //ASP.NET Core 有3个 Host 类,是ASP.NET Core中用于初始化,生命周期管理,启动Web 服务的最重要的类。所以详细重点分析一下这几个类,分别是:
  24. //WebApplication,ASP.NET Core 6 引入的替代WebHost的类,可以用于 Web App或者 Web API
  25. //Host,非 Web App或者Web API 使用的 Host 类,比如纯控制台,或者 Windows Service。
  26. //WebHost,ASP.NET Core 6之前的版本使用的Host类。
  27.  
  28. // WebApplication 2 个静态方法
  29. //CreateBuilder(),用于创建WebApplicationBuilder 对象,再用 Build 模式添加一些中间件,再创建WebApplication对象。
  30. //Create(),用于直接创建一个WebApplication对象,会默认添加和配置一些中间件。
  31. //MapGet(),模式匹配 HTTP Get请求,映射到某个endpoint。
  32. app.MapGet("/", () => "Hello World!");
  33. // 通过 WebApplication对象 添加内置的或者自定义的中间件
  34. // Configure the HTTP request pipeline.
  35. if (app.Environment.IsDevelopment())
  36. {
  37. app.UseSwagger();
  38. app.UseSwaggerUI();
  39. }
  40.  
  41. var isUseSwagger = settingHelper.Get("UseSwagger"); // 获取是否启用 Swagger 选项
  42. var conn = settingHelper.Get("ConnectionStrings:SugarConnectString"); // 使用Get获取字符串中的数据库连接字符串
  43. var conn1 = settingHelper.Get("SqlDbType",true); // 获取数据库类型 如果第二个参数 true 直接获取 ConnectionStrings 里面key值
  44.  
  45. app.UseHttpsRedirection();
  46.  
  47. app.UseAuthorization();
  48.  
  49. app.MapControllers();
  50.  
  51. 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. appium python 点击坐标 tap

    appium python 点击坐标 tap 有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问)那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击, ...

  2. 【Mybatis-Plus】联表分页查询实现

    参考文章: https://blog.csdn.net/weixin_43847283/article/details/125822614 上上周写的SQL案例确实可以重构,所以搬到Demo里面测试看 ...

  3. 【Scala】01 基础了解

    Features 特性 1.基于JVM,完全兼容Java 2.同样具有跨平台,可移植,垃圾回收 3.比Java更加的面向对象[完全面向对象] 4.函数式编程 5.面向大数据处理,对集合容器框架有一定的 ...

  4. 【Vue】06 Webpack Part2 打包命令配置

    Webpack 配置: 入口 & 出口: 就是我们使用的打包命令: 一个是对什么文件执行,这就是入口 一个是输出到什么文件,这就是出口 每一次打包使用这个命令都必须指定这两个必要的参数 所以将 ...

  5. 中国版的huggingface——始智AI-wisemodel

    新闻: 始智AI-wisemodel社区正式上线,目标打造中国版"HuggingFace" 首先要知道,AI火热了7,8年了,不论是国内还是国外一直有要搞模型分享的网站,但是这东西 ...

  6. Tensorflow1.14中placeholder.shape和tf.shape(placeholder)的区别

    最近在看TensorFlow的代码,还是1.14版本的TensorFlow的,代码难度确实比pytorch的难上不是多少倍,pytorch的代码看一遍基本能看懂个差不多,TensorFlow的代码看一 ...

  7. LVGL btn组件

    /************************************************* * * file name:widget_line.c * author :momolyl@126 ...

  8. Java反射初探123456789

    牛逼的框架都反射,不要问我为什么,因为我也不知道 可能是因为生成了class文件没法实例化,所以只能反射创建对象,但是在spring中,ioc就是反射实现的控制反转 看Spring4.x企业级开发实战 ...

  9. 跨越时空的对话:如何使用AI阅读工具ChatDOC快速建立数字化身?

    跨越时空的对话:如何使用 ChatDOC 快速建立数字化身?以史蒂夫·乔布斯 AI 为例 开门见山,这篇文章主要介绍如何将 AI 改造为靠谱.好用.基于某个人物的数字化身.比如,乔布斯 AI.马斯克 ...

  10. 软件开发工程师,几款常用的APP,你用过几款?最后一个测试网络必备

    作为一名程序员,手机里一定有几个常用的app,下面给大家推荐几款. 1. CSDN 国内最大编程论坛:虽然有多少人吐槽现在使用csdn就像屎里淘金, 但是不得不承认他仍然是大家搜索技术资料.问题的首选 ...