.NET 8における設定ファイルの扱い方
JSONファイルからの設定読み込み
AppSettings.jsonファイルの例:
{
"UserProfile": {
"UserName": "田中太郎",
"Sex": "男性",
"Years": 25
}
}
実装コード:
static void LoadJsonConfiguration()
{
// ConfigurationBuilderのインスタンス作成
var configBuilder = new ConfigurationBuilder();
// JSONファイルの追加
configBuilder.AddJsonFile("AppSettings.json");
// 設定の構築
IConfiguration config = configBuilder.Build();
// 設定値の取得
string userName = config["UserProfile:UserName"];
int userAge = int.Parse(config["UserProfile:Years"]);
string userSex = config["UserProfile:Sex"];
Console.WriteLine($"名前:{userName}, 年齢:{userAge}, 性別:{userSex}");
Console.ReadKey();
}
YAMLファイルからの設定読み込み
static void LoadYamlConfiguration()
{
var configBuilder = new ConfigurationBuilder();
configBuilder.AddYamlFile("AppSettings.yaml");
IConfiguration config = configBuilder.Build();
string userName = config["UserProfile:UserName"];
int userAge = int.Parse(config["UserProfile:Years"]);
string userSex = config["UserProfile:Sex"];
Console.WriteLine($"名前:{userName}, 年齢:{userAge}, 性別:{userSex}");
Console.ReadKey();
}
設定のオブジェクトへのバインド
モデルクラスの定義:
public class UserProfile
{
public string UserName { get; set; }
public string Sex { get; set; }
public int Years { get; set; }
}
バインド処理の実装:
static void BindConfigurationToObject()
{
var configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("AppSettings.json");
IConfiguration config = configBuilder.Build();
// 設定セクションのバインド
var userProfile = new UserProfile();
config.GetSection("UserProfile").Bind(userProfile);
Console.WriteLine($"名前:{userProfile.UserName}, 年齢:{userProfile.Years}, 性別:{userProfile.Sex}");
Console.ReadKey();
}
IOptionsを使用した設定管理
static void UseOptionsPattern()
{
var configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("AppSettings.json");
IConfiguration config = configBuilder.Build();
// サービスコレクションの設定
var services = new ServiceCollection();
services.Configure<UserProfile>(config.GetSection("UserProfile"));
// サービスプロバイダーの構築
var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<UserProfile>>();
var userProfile = options.Value;
Console.WriteLine($"名前:{userProfile.UserName}, 年齢:{userProfile.Years}, 性別:{userProfile.Sex}");
}