title: .NET Core configuration manager, reading a dictionary where one key has a colon inside, gives an odd error message about the value, is this expected?
body: <p>The following program:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using Microsoft.Extensions.Configuration;
  
  namespace ConsoleApp3
  {
      class Program
      {
          static void Main()
          {
              var builder = new ConfigurationBuilder();
              builder.AddJsonFile("appsettings.json");
  
              var configuration = builder.Build();
              var options = configuration.Get&lt;Options&gt;();
              foreach (var kvp in options.Values)
                  Console.WriteLine($"{kvp.Key}: {kvp.Value}");
          }
      }
  
      internal class Options
      {
          public Dictionary&lt;string, bool&gt; Values { get; } = new Dictionary&lt;string, bool&gt;();
      }
  }
  </code></pre>
  
  <p>When given this <code>appsettings.json</code> file, runs perfectly:</p>
  
  <pre><code>{
      "Values": {
          "a": true,
          "b": false
      }
  }
  </code></pre>
  
  <p>but change the <code>appsettings.json</code> contents to this:</p>
  
  <pre><code>{
      "Values": {
          "a:b": true,
          "b": false
      }
  }
  </code></pre>
  
  <p>and I get this exception:</p>
  
  <blockquote>
    <p>Unhandled Exception: System.InvalidOperationException: Cannot create instance of type 'System.Boolean' because it is missing a public parameterless constructor.</p>
  </blockquote>
  
  <p>stack trace:</p>
  
  <pre><code>   at Microsoft.Extensions.Configuration.ConfigurationBinder.CreateInstance(Type type)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindDictionary(Object dictionary, Type dictionaryType, IConfiguration config, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindProperty(PropertyInfo property, Object instance, IConfiguration config, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindNonScalar(IConfiguration configuration, Object instance, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
     at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration, Action`1 configureOptions)
     at ConsoleApp3.Program.Main() in D:\Dev\ConsoleApp3\ConsoleApp3\Program.cs:line 15
  </code></pre>
  
  <p>What am I doing wrong? Note that having a colon in the key is perfectly legal json, but perhaps storing any odd dictionary in the appsettings.json file is not supported?</p>