节选自这里
以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"]; // 结果 12345Configuration["Logging:IncludeScopes"]; // 结果 falseConfiguration["Logging:LogLevel:Default"]; // 结果 DebugConfiguration["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); // 结果 12345Configuration.GetValue<bool>("Logging:IncludeScopes", false); // 结果 falseConfiguration.GetValue<string>("Logging:LogLevel:Default", "Debug"); // 结果 DebugConfiguration.GetValue<string>("GrantTypes:0:Name", "authorize_code"); // 结果 authorization_code
GetValue方法的泛型形式有两个重载,一个是GetValue("key"),另一个可以指定默认值,GetValue("key",defaultValue)。如果key的配置不存在,第一种的结果为default(T),第二种的结果则为指定的默认值。
.NET Core的配置文件
原文地址:https://www.cnblogs.com/shuangzimuchangzhu/p/8459413.html