設定ファイルは色々な形式がありますが、iniファイルを読み込みを試してみます。
設定ファイルの内容をGeneralSettingsというPOCOなクラスにセットしています。
iniファイル:config.ini
[General]
AppName=MyApp
MaxRetry=5
EnableFeature=true
ファイル名:ConfiguretionIniSample01.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="9.0.7" />
</ItemGroup>
</Project>
ファイル名:GeneralSettings.cs
public class GeneralSettings
{
public string AppName { get; set; } = "";
public int MaxRetry { get; set; }
public bool EnableFeature { get; set; }
}
ファイル名:Program.cs
using Microsoft.Extensions.Configuration;
class Program
{
static void Main()
{
const string iniFile = @"J:\csharp\console\ConfiguretionIniSample01\config.ini";
var config = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddIniFile(iniFile, optional: false, reloadOnChange: true)
.Build();
var general = new GeneralSettings();
config.GetSection("General").Bind(general);
Console.WriteLine($"AppName: {general.AppName}");
Console.WriteLine($"MaxRetry: {general.MaxRetry}");
Console.WriteLine($"EnableFeature: {general.EnableFeature}");
}
}
/*
実行結果
dotnet run
AppName: MyApp
MaxRetry: 5
EnableFeature: True
*/
GeneralSettingsはWPFだったらAppクラスのメンバーにしておくと良さそうですね。
コメント