C#でMicrosoft.Extensions.Configurationを使い設定ファイル(.ini)を読み込む

コンピュータ

設定ファイルは色々な形式がありますが、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クラスのメンバーにしておくと良さそうですね。

コメント