Microsoft.Extensions.Configuration を使って、INI ファイルに書いた設定を読み込む
exe.config はずっと微妙だなあと思っていたのですが、Microsoft 謹製の INI ファイルから設定を読む手段が提供されたので、それを使ってみる. 例として以下の INI ファイルを読むコードを作成する. 書いたコードは GitHubにも上げてある.
config.ini
[ConnectionStrings]Database=xxx[AppSettings]UserName=fooPassword=barRetryCount=3
Console App (.NET Core) プロジェクトを作成する. TargetFramework が netcoreapp3.1 (.NET Core 3.1) で作成される. 要求は .NET Standard 2.0 なので .NET Framework 4.6.1 や、.NET Core 2.0 でも動くはず.
次に Microsoft.Extensions.Configuration.Ini
と Install-Package Microsoft.Extensions.Configuration.Binder
を nuget インストールする. これを書いている時点では 3.1.3 がインストールされる.
Install-PackageMicrosoft.Extensions.Configuration.IniInstall-PackageMicrosoft.Extensions.Configuration.Binder
そして、セクション毎に情報を詰めるクラスを書いていく.
ConnectionStringsConfig.cs
namespaceConsoleApp1{publicclassConnectionStringsConfig{publicstringDatabase{get;set;}}}
AppSettingsConfig.cs
namespaceConsoleApp1{publicclassAppSettingsConfig{publicstringUserName{get;set;}publicstringPassword{get;set;}publicintRetryCount{get;set;}}}
最後にそれらセクション毎のクラスをまとめ上げるクラスと、INI ファイルから設定を読み込むメソッドを書いて完成.
AppConfig.cs
usingMicrosoft.Extensions.Configuration;namespaceConsoleApp1{publicclassAppConfig{staticAppConfigInstance;publicConnectionStringsConfigConnectionStrings{get;set;}publicAppSettingsConfigAppSettings{get;set;}publicAppConfig(){}publicstaticAppConfigGet(){if(Instance!=null)returnInstance;Instance=newConfigurationBuilder().AddIniFile(".\\config.ini").Build().Get<AppConfig>();returnInstance;}}}
以下のように簡単に設定内容にアクセスできる.
Program.cs
usingSystem;namespaceConsoleApp1{classProgram{staticreadonlyAppConfigConfig=AppConfig.Get();staticvoidMain(string[]args){Console.WriteLine(Config.ConnectionStrings.Database);Console.WriteLine(Config.AppSettings.UserName);Console.WriteLine(Config.AppSettings.RetryCount);Console.Read();}}}