-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Closed
Copy link
Labels
area-Extensions-Configurationsource-generatorIndicates an issue with a source generator featureIndicates an issue with a source generator feature
Milestone
Description
Repro:
using System.Text.Json.Serialization;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
var builder = new ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string?>
{
{ "MySettings:Dictionary:Key1", "Value1" },
});
var configuration = builder.Build();
var services = new ServiceCollection();
services.Configure<MySettings>(configuration.GetSection("MySettings"));
var serviceProvider = services.BuildServiceProvider();
var settings = serviceProvider.GetRequiredService<IOptions<MySettings>>().Value;
Console.WriteLine($"{string.Join(", ", settings.Dictionary.Select(kvp => $"{kvp.Key}: {kvp.Value}"))}");
public class MySettings
{
public Dictionary<string, MyValue?> Dictionary { get; set; } = new ();
}
public enum MyValue
{
Value1,
Value2,
Value3
}Using reflection-based binding this prints Key1: Value1.
With <EnableConfigurationBindingGenerator>true</EnableConfigurationBindingGenerator> it doesn't print anything, and I see this in the generated sources:
public static void BindCore(IConfiguration configuration, ref global::System.Collections.Generic.Dictionary<string, global::MyValue?> instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
{
foreach (IConfigurationSection section in configuration.GetChildren())
{
}
}Metadata
Metadata
Assignees
Labels
area-Extensions-Configurationsource-generatorIndicates an issue with a source generator featureIndicates an issue with a source generator feature