.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}"); }