前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【BlogBook书】1、AppSettings:自定义参数配置

【BlogBook书】1、AppSettings:自定义参数配置

作者头像
老张的哲学
发布2024-01-15 17:43:01
1220
发布2024-01-15 17:43:01
举报
文章被收录于专栏:NetCore 从壹开始NetCore 从壹开始

框架中有两种获取参数配置的方式。

本章节是第一种——通过单例模式,将appsettings.json文件中的所有配置,在项目启动的时候,统一添加到了AppSettings对象实例中。

一、相关的服务注册

代码语言:javascript
复制
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、按一定的层级路径,组成多个逗号隔开的一组参数

代码语言:javascript
复制
Permissions.IsUseIds4 = AppSettings.app("Startup", "IdentityServer4", "Enabled").ObjToBool();
RoutePrefix.Name = AppSettings.app("AppSettings", "SvcName").ObjToString();

2、按照一定的层级路径,组成字符串数组

代码语言:javascript
复制
Permissions.IsUseIds4 = AppSettings.app(new string[] { "Startup", "IdentityServer4", "Enabled" }).ObjToBool();
RoutePrefix.Name = AppSettings.app(new string[] { "AppSettings", "SvcName" }).ObjToString();

3、按照一定的层级路径,组成冒号隔开的字符串

代码语言:javascript
复制
string PermissionServName = AppSettings.GetValue("ApiGateWay:PermissionServName");
string PermissionServGroup = AppSettings.GetValue("ApiGateWay:PermissionServGroup");
string PermissionServUrl = AppSettings.GetValue("ApiGateWay:PermissionServUrl");

4、返回结果除了是字符串以外,也支持返回List泛型数组或对象

代码语言:javascript
复制
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 文件中

代码语言:javascript
复制
{
  //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"
      }
    ]
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档