框架中有两种获取参数配置的方式。
本章节是第一种——通过单例模式,将appsettings.json文件中的所有配置,在项目启动的时候,统一添加到了AppSettings对象实例中。
一、相关的服务注册
builder.Host
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.Sources.Clear();
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
config.AddConfigurationApollo("appsettings.apollo.json");
});
builder.Services.AddSingleton(new AppSettings(builder.Configuration));
二、使用方式
直接类似静态类的方式使用即可,多种方式均可使用,看个人的爱好习惯:
1、按一定的层级路径,组成多个逗号隔开的一组参数
Permissions.IsUseIds4 = AppSettings.app("Startup", "IdentityServer4", "Enabled").ObjToBool();
RoutePrefix.Name = AppSettings.app("AppSettings", "SvcName").ObjToString();
2、按照一定的层级路径,组成字符串数组
Permissions.IsUseIds4 = AppSettings.app(new string[] { "Startup", "IdentityServer4", "Enabled" }).ObjToBool();
RoutePrefix.Name = AppSettings.app(new string[] { "AppSettings", "SvcName" }).ObjToString();
3、按照一定的层级路径,组成冒号隔开的字符串
string PermissionServName = AppSettings.GetValue("ApiGateWay:PermissionServName");
string PermissionServGroup = AppSettings.GetValue("ApiGateWay:PermissionServGroup");
string PermissionServUrl = AppSettings.GetValue("ApiGateWay:PermissionServUrl");
4、返回结果除了是字符串以外,也支持返回List泛型数组或对象
List<MutiDBOperate> listdatabase = AppSettings.app<MutiDBOperate>("DBS")
.Where(i => i.Enabled).ToList();
List<Urlobj> WhiteList = _cache.Cof_GetICaching<List<Urlobj>>("WhiteList", () => AppSettings.app<Urlobj>("WhiteList"), 10);
5、项目也同时支持Apollo,可以直接配置使用
appsettings.apollo.json 文件中
{
//apollo 配置
"Apollo": {
"Enable": false,
"Config": {
"AppId": "blog.core",
"Env": "DEV",
"MetaServer": "http://localhost:8080/",
"ConfigServer": [ "http://localhost:8080/" ]
},
"Namespaces": [ //Namespaces的数据格式Properties,Xml,Json,Yml,Yaml,Txt
{
"Name": "test",
"Format": "json"
}
]
}
}
本文分享自 NetCore 从壹开始 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!