- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5.2k
Description
Description
When binding an options type that contains a public get-only property of type IDictionary<,>, the binding is skipped and the dictionary is not populated.
Reproduction Steps
namespace ConsoleApp38
{
    internal class Program
    {
        static void Main(string[] args)
        {
            IHost host = new HostBuilder()
                .ConfigureAppConfiguration(builder =>
                {
                    builder.AddInMemoryCollection(new Dictionary<string, string?>()
                    {
                        { "DictionaryOptions:Key1", "Value1" }
                    });
                })
                .ConfigureServices((context, services) =>
                {
                    services.Configure<TestOptions>(context.Configuration);
                })
                .Build();
            IOptions<TestOptions> options = host.Services.GetRequiredService<IOptions<TestOptions>>();
            IDictionary<string, string> dictionaryOptions = options.Value.DictionaryOptions;
            Console.WriteLine("Count = {0}", dictionaryOptions.Count);
        }
    }
    public class TestOptions
    {
        public IDictionary<string, string> DictionaryOptions { get; }
            = new Dictionary<string, string>();
    }
}Expected behavior
The dictionary property on the options instance should have one key-value pair. Console will write out "Count = 1".
Actual behavior
The dictionary property on the options instance has not key-value pairs. Console will write out "Count = 0".
Regression?
Yes, this worked in .NET 7 Preview 7, all prior previews, and all prior .NET (Core) versions.
Known Workarounds
Changing the property type to Dictionary<,> seems to work around this issue.
Configuration
Windows 11 x64 .NET SDK 7.0.100-rc.1.22431.12
Not specific to this configuration, it is failing on all OSes and all architectures in the dotnet-monitor PR builds when attempting to update to .NET 7 RC 1.
Other information
No response