流浪のwolf

卷帝

导航

dotnet封装一个配置工具类

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

posted on 2024-05-30 15:50  流浪のwolf  阅读(10)  评论(0编辑  收藏  举报