Bind an IConfigurationSection to a complex object without ASP.NET Core
Asked Answered
C

1

49

I have a .NET Core console application and want to read the appsettings.json and parse a section as List<Param> (without Dependency Injection or ASP.NET Core).
I already tried How do I bind a multi level configuration object using IConfiguration in a .net Core application? but it seems like .Get<T>() got removed from 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"}
  ]
}

Is there an easy way to load the config into the object or do I have to read the config file again and parse it myself with JsonConvert?

Cicatrix answered 11/7, 2017 at 15:45 Comment(1)
Duplicate: #36694599Wearable
H
116

Get<T> is defined in package Microsoft.Extensions.Configuration.Binder

Hafer answered 11/7, 2017 at 15:54 Comment(4)
Thanks, it did the trick. As much I love it, I sometimes hate that they switched everything to a different nkpg.Cicatrix
#loveHate Yep,I'm always searching for and finding that "extra" nkpg.Grecoroman
This doesn't appear to be the same as GetSection as it appears to get the entire config file as an object.Gillam
You can use it an on IConfiguratoinSection and get just this section as an objectVshaped

© 2022 - 2024 — McMap. All rights reserved.