封装Appsetting单例类获取配置
1.导入包8.0.0版本
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
2.配置对应的appsetting文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Redis": {
"Enable": false,
"ConnectionString": "127.0.0.1:6379",
"InstanceName": "" // 前缀
}
}
3.配置AppSettings单例类获取配置
/// <summary>
/// appsettings.json类
/// </summary>
public class AppSettings
{
public static IConfiguration Configuration { get; set; }
public string contentPath { get; set; }
public AppSettings(string contentPath)
{
string Path = "appsetting.json";
// 如果你把配置文件 根据环境变量来分开了,可以这样写
Configuration = new ConfigurationBuilder()
.SetBasePath(contentPath)
.Add(new JsonConfigurationSource
{
Path = Path,
Optional = false,
ReloadOnChange = true
}) // 这样的话可以字节读目录里的json文件,而不是bin文件夹下的,所以不用修改复制属性
.Build();
}
public AppSettings(IConfiguration configuration)
{
Configuration = configuration;
}
/// <summary>
/// 封装要操作的字符
/// </summary>
/// <param name="section">节点配置</param>
/// <returns></returns>
public static string app(params string[] section)
{
try
{
if (section.Any())
{
return Configuration[string.Join(":", section)];
}
}
catch (Exception)
{
throw;
}
return "";
}
/// <summary>
/// 递归获取配置信息数组
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="section"></param>
/// <returns></returns>
public static List<T> app<T>(params string[] section)
{
List<T> list = new List<T>();
// 引用Microsoft.Extensions.Configuration.Binder包
Configuration.Bind(string.Join(":", section), list);
return list;
}
/// <summary>
/// 根据路径 configuration["App.Name"]
/// </summary>
/// <param name="sectionsPath"></param>
/// <returns></returns>
public static string GetValue(string sectionsPath)
{
try
{
return Configuration[sectionsPath];
}
catch (Exception)
{
}
return "";
}
}
4.在Program类中配置AppSetting单例类
// 配置AppSettings文件获取appsettings信息
builder.Services.AddSingleton(new AppSettings(builder.Configuration));
5.在control层使用

var redisEnable = AppSettings.app(new string[] {"Redis", "Enable"});
var redisEnable2 = AppSettings.app("Redis", "Enable");
var redisConnectionString = AppSettings.GetValue("Redis:ConnectionString");
Console.WriteLine($"Enable:{redisEnable2}, ConnectionString:{redisConnectionString}");

浙公网安备 33010602011771号