-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Milestone
Description
Description
In recent main branch, I found seems ConfigurationBinder cannot bind private properties of base classes, but before that, it can (for example .net 3, 5, 6).
Recent main branch (I add an test case to show result):

[Fact]
public void CanBindPrivatePropertiesFromBaseClass()
{
ConfigurationBuilder configurationBuilder = new();
configurationBuilder.AddInMemoryCollection(new Dictionary<string, string>
{
{ "PrivateProperty", "a" }
});
IConfiguration config = configurationBuilder.Build();
var test = new ClassOverridingVirtualProperty();
config.Bind(test, b => b.BindNonPublicProperties = true);
Assert.Equal("a", test.ExposePrivatePropertyValue());
}
public class BaseClassWithVirtualProperty
{
private string? PrivateProperty { get; set; }
public string? ExposePrivatePropertyValue() => PrivateProperty;
}
public class ClassOverridingVirtualProperty : BaseClassWithVirtualProperty
{
}I raised PR to try to fix that, meantime can handle virtual properties.
Reproduction Steps
As above.
Expected behavior
ConfigurationBinder may should be able to bind private properties of base classes.
Actual behavior
ConfigurationBinder cannot bind private properties of base classes in recent main branch.
Regression?
Yes, it did.
Known Workarounds
No response
Configuration
Found this from main branch with commit version: 2ce8130, at least.
Other information
I raised PR to try to fix that, meantime can handle virtual properties.
