节选自这里html
以Json为例json
Json配置,须要安装 Microsoft.Extensions.Configuration.Json 包。数组
调用AddJsonFile把Json配置的Provider添加到ConfigurationBuilder中。app
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"。ide
下面是演示用的Json配置,后面会讲解全部读取它的方法函数
{ "AppId": "12345", "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "GrantTypes": [ { "Name": "authorization_code" }, { "Name": "password" }, { "Name": "client_credentials" } ] }
1.使用Key读取ui
Configuration["AppId"]; // 结果 12345
Configuration["Logging:IncludeScopes"]; // 结果 false
Configuration["Logging:LogLevel:Default"]; // 结果 Debug
Configuration["GrantTypes:0:Name"]; // 结果 authorization_code
读取嵌套的配置,使用冒号隔开;读取数组形式的配置,使用数组的下标索引,0表示第一个。spa
如在其余地方用到Configuration的时候,能够经过构造函数注入IConfiguration。code
首先配置IConfiguration的依赖orm
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),第二种的结果则为指定的默认值。