web-dev-qa-db-ja.com

IConfigurationSectionをaspnetcoreなしで複雑なオブジェクトにバインドする

NetCoreコンソールアプリケーションがあり、appsettings.jsonを読み取って、List<Param>としてセクションを解析したい(依存性注入またはAspNetCoreなし)。
すでに試しました 。net CoreアプリケーションでIConfigurationを使用してマルチレベル構成オブジェクトをバインドするにはどうすればよいですか しかし、.Get<T>()netcoreapp1.1から削除されたようです

IConfigurationSection myListConfigSection = configurationRoot.GetSection("ListA");

List<Param> paramList;

//Get does not exist
//paramList = myListConfigSection.Get<Param>();

string paramListJson = myListConfigSection.Value // is null
// won't work neither because paramListJson is null
paramList = JsonConvert.DeserializeObject<Param>(paramListJson);

appsettings.json:

{
  "ListA": [
    { "ID": "123", "Param": "ABC"},
    { "ID": "123", "Param": "JKS"},
    { "ID": "456", "Param": "DEF"}
  ]
}

構成をオブジェクトにロードする簡単な方法はありますか、それとも構成ファイルを再度読み取ってJsonConvertで自分で解析する必要がありますか?

11
Maximilian Ast

Get<T>はパッケージMicrosoft.Extensions.Configuration.Binderで定義されています

24
Treziac