.NET Core App 讀取 Json 設定檔
安裝
Install-Package Microsoft.Extensions.Configuration.Json
讀取設定檔步驟
通過 IConfigurationBuilder 物件建立 IConfigurationRoot 物件。
IConfigurationBuilder.SetBasePath 方法是設定檔案的基本路徑
IConfigurationBuilder.AddJsonFile 方法是讀取設定檔的路徑,完整的路徑為 基本路徑 + AddJsonFile
IConfigurationRoot[節點名稱] / IConfiguration[節點名稱] 取得設定值
[TestMethod] public void 讀取設定檔() { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var config = builder.Build(); Console.WriteLine($"AppId = {config["AppId"]}"); Console.WriteLine($"AppId = {config["Player:AppId"]}"); Console.WriteLine($"Key = {config["Player:Key"]}"); Console.WriteLine($"Connection String = {config["ConnectionStrings:DefaultConnectionString"]}"); }
參數綁定強型別 安裝 Install-Package Microsoft.Extensions.Configuration.Binder
public class AppSetting
{
public ConnectionStrings ConnectionStrings { get; set; }
public Player Player { get; set; }
}
public class Player
{
public string AppId { get; set; }
public string Key { get; set; }
}
ConfigurationBinder.Bind/Get擴充方法,直接將 IConfiguration 轉換成強型別物件
[TestMethod]
public void 綁定設定_擴充方法_Get()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var config = builder.Build();
var player = config.GetSection("Player").Get();
Console.WriteLine($"AppId = {player.AppId}");
Console.WriteLine($"Key = {player.Key}");
}
[TestMethod]
public void 綁定設定_擴充方法_Bind()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var config = builder.Build();
var appSetting = new AppSetting();
config.Bind(appSetting);
Console.WriteLine($"AppId = {appSetting.Player.AppId}");
Console.WriteLine($"Key = {appSetting.Player.Key}");
Console.WriteLine($"Connection String = {appSetting.ConnectionStrings.DefaultConnectionString}");
}