读取配置 配置节标识符
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;
}
}