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

21,771

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

Share:
21,771
Maximilian Ast
Author by

Maximilian Ast

Just earning some internet points 😄 Languages of choice: C#, Typescript Operating systems: Windows, Linux

Updated on July 09, 2022

Comments

  • Maximilian Ast
    Maximilian Ast almost 2 years

    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?

  • Maximilian Ast
    Maximilian Ast almost 7 years
    Thanks, it did the trick. As much I love it, I sometimes hate that they switched everything to a different nkpg.
  • granadaCoder
    granadaCoder over 5 years
    #loveHate Yep,I'm always searching for and finding that "extra" nkpg.
  • Luke
    Luke over 5 years
    This doesn't appear to be the same as GetSection as it appears to get the entire config file as an object.
  • Guillaume
    Guillaume about 5 years
    You can use it an on IConfiguratoinSection and get just this section as an object