怪奇物语

怪奇物语

首页 新随笔 联系 管理

读取配置 配置节标识符

Program.cs的配置文件

using Demo.Application.Services;
using Demo.Setting.SqlSugarSettings;
using Demo.SqlSugarRepository.DependencyInjection;
using Demo.Utils;
using DemoCocWeb.Server.Extensions;
using DemoCocWeb.Server.Middleware;
using NLog.Extensions.Logging;

var builder = WebApplication.CreateBuilder(args);

Demo.AppSettings.DbSettings dbSettings = builder.Configuration.GetDbSettings();

foreach (var setting in dbSettings.ConnectionItem)
{
    System.Console.WriteLine(setting.ConnectionString);
}

DbSettings.cs


using Demo.Core.Interfaces;

namespace Demo.AppSettings;

// DataConnection
public class DbSettings : IAppSettings
{
    //                👇👇👇👇:配置节标识符
    public const string Key = nameof(DbSettings);
    public List<ConnectionItem> ConnectionItem { get; set; }
}

public class ConnectionItem
{
    public string ConfigId { get; set; }
    public int HitRate { get; set; }
    public SqlSugar.DbType DbType { get; set; }
    public bool Enabled { get; set; }
    public string ConnectionString { get; set; }
    public bool IsAutoCloseConnection { get; set; }
}



ConfigurationExtensions.cs


using Demo.AppSettings;
using Microsoft.Extensions.Configuration;

namespace DemoCocWeb.Server.Extensions;

public static class ConfigurationExtensions
{
    public static DbSettings GetDbSettings(this IConfiguration configuration)
    {
        // 如果使用方法一,其实不用写成拓展方法也是可以
        // 方法一 : 获取配置                              👇👇👇👇👇👇: 配置节标识符  
        DbSettings dbSettings = configuration.GetSection(DbSettings.Key).Get<DbSettings>() ?? throw new Exception($"{DbSettings.Key} not in appsettings.json");
        return dbSettings;

        // 方法二 : 手动绑定配置 
        // return GetSection<DbSettings>(configuration, DbSettings.Key);
    }

    private static T GetSection<T>(IConfiguration configuration, string key) where T : new()
    {
        var section = configuration?.GetSection(key);
        var data = new T();
        section.Bind(data);
        return data;
    }
}


posted on 2025-05-07 08:00  超级无敌美少男战士  阅读(11)  评论(0)    收藏  举报