節選自這裏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),第二種的結果則爲指定的默認值。