zoukankan      html  css  js  c++  java
  • .NET Core的配置文件

    节选自这里

    以Json为例

    Json配置,需要安装 Microsoft.Extensions.Configuration.Json 包。

    调用AddJsonFile把Json配置的Provider添加到ConfigurationBuilder中。

    class Program
    {
        public static IConfigurationRoot Configuration { get; set; }
    
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json");
    
            Configuration = builder.Build();
        }
    }

    SetBasePath是指定从哪个目录开始查找appsettings.json。如果appsettings.json在configs目录中,那么调用AddJsonFile应该指定的路径为"configs/appsettings.json"。

    下面是演示用的Json配置,后面会讲解所有读取它的方法

    {
      "AppId": "12345",
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      },
      "GrantTypes": [
        {
          "Name": "authorization_code"
        },
        {
          "Name": "password"
        },
        {
          "Name": "client_credentials"
        }
      ]
    }

    读取JSON配置

    1.使用Key读取

    Configuration["AppId"]; // 结果 12345
    Configuration["Logging:IncludeScopes"]; // 结果 false
    Configuration["Logging:LogLevel:Default"]; // 结果 Debug
    Configuration["GrantTypes:0:Name"]; // 结果 authorization_code

    读取嵌套的配置,使用冒号隔开;读取数组形式的配置,使用数组的下标索引,0表示第一个。

    如在其他地方用到Configuration的时候,可以通过构造函数注入IConfiguration。

    首先配置IConfiguration的依赖

    services.AddSingleton<IConfiguration>(Configuration);

    然后在通过构造函数注入

    private readonly IConfiguration _configuration;
    public GetConfig(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    2.使用 GetValue<T> 

    这是一个扩展方法,使用它需要安装 Microsoft.Extensions.Configuration.Binder 包。

    Configuration.GetValue<int>("AppId", 12345); // 结果 12345
    Configuration.GetValue<bool>("Logging:IncludeScopes", false); // 结果 false
    Configuration.GetValue<string>("Logging:LogLevel:Default", "Debug"); // 结果 Debug
    Configuration.GetValue<string>("GrantTypes:0:Name", "authorize_code"); // 结果 authorization_code

    GetValue方法的泛型形式有两个重载,一个是GetValue("key"),另一个可以指定默认值,GetValue("key",defaultValue)。如果key的配置不存在,第一种的结果为default(T),第二种的结果则为指定的默认值。

  • 相关阅读:
    java线程上
    java常用类
    java面向对象4
    java 面向对象三
    java面向对象下
    java面向对象
    java基础下
    Java之Stream流
    JAVA泛型
    英语
  • 原文地址:https://www.cnblogs.com/shuangzimuchangzhu/p/8459413.html
Copyright © 2011-2022 走看看