前言
最常用的加载json配置文件,采用微软自带的方法AddJsonFile,这时可通过Configuration来读取配置信息,有时为了了解原理,我们自己写重写一个加载配置的方法,下面我们来实战一下。
往期最小api文章回顾
.net6使用最小api(1)——依赖注入Autofac之构造函数注入
.net6使用最小api(2)——依赖注入Autofac之属性注入
.net6使用最小api(5)— 自定义模型验证3-FluentValidation
.net6使用最小api(6)— 集成swagger扩展类方便直接拿用
项目实战
1、重写配置文件类
添加配置文件名为AppConfigurationExtensions的类,扩展方法如下:
public static class AppConfigurationExtensions
{
public static IConfigurationBuilder AddAppSettingsFile(this IConfigurationBuilder builder, string path)
{
return AddAppSettingsFile(builder, provider: null, path: path, basePath: null, optional: false, reloadOnChange: false);
}
public static IConfigurationBuilder AddAppSettingsFile(this IConfigurationBuilder builder, string path, bool optional)
{
return AddAppSettingsFile(builder, provider: null, path: path, basePath: null, optional: optional, reloadOnChange: false);
}
public static IConfigurationBuilder AddAppSettingsFile(this IConfigurationBuilder builder, string path, bool optional, bool reloadOnChange)
{
return AddAppSettingsFile(builder, provider: null, path: path, basePath: null, optional: optional, reloadOnChange: reloadOnChange);
}
public static IConfigurationBuilder AddAppSettingsFile(this IConfigurationBuilder builder, string path, string basePath, bool optional, bool reloadOnChange)
{
return AddAppSettingsFile(builder, provider: null, path: path, basePath: basePath, optional: optional, reloadOnChange: reloadOnChange);
}
public static IConfigurationBuilder AddAppSettingsFile(this IConfigurationBuilder builder, IFileProvider provider, string path, string basePath, bool optional, bool reloadOnChange)
{
var source = new JsonConfigurationSource()
{
FileProvider = provider,
Path = path,
Optional = optional,
ReloadOnChange = reloadOnChange
};
builder.Add(source);
if (!string.IsNullOrEmpty(basePath))
builder.SetBasePath(basePath);
AppConfig.Configuration = builder.Build();
return builder;
}
}2、最小api,Program添加配置:
var builder = WebApplication.CreateBuilder(args);
builder.Host
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.Sources.Clear();
config.AddJsonFile($"Configs/redis.json", optional: false, reloadOnChange: true);
config.AddJsonFile($"Configs/domain.json", optional: false, reloadOnChange: true);
config.AddAppSettingsFile($"appsettings.json", optional: true, reloadOnChange: true);
});
//局部调用方法
var memberUrl = builder.Configuration["MemberUrl"];3、调用方法
//局部调用方法
var memberUrl = builder.Configuration["MemberUrl"];
//全局调用方法
var url = DMS.Common.AppConfig.GetValue("ProductUrl");
var de = DMS.Common.AppConfig.GetValue(new string[] { "Logging", "LogLevel", "Default" });5、总结
自定义配置文件扩展方法,并结合最小api调用配置文件,个人感觉方便也实用。

版权声明:本文为hailang2ll原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。