diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs index fe864425dfef12..e1a0adc80a3fea 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs @@ -1138,7 +1138,7 @@ private static List GetAllProperties( throw new InvalidOperationException(SR.Format(SR.Error_ParameterBeingBoundToIsUnnamed, type)); } - var propertyBindingPoint = new BindingPoint(initialValue: config.GetSection(parameterName).Value, isReadOnly: false); + var propertyBindingPoint = new BindingPoint(isReadOnly: false); BindInstance( parameter.ParameterType, diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs index 78f7cc9e27a554..9499236c74ce42 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.TestClasses.cs @@ -1190,5 +1190,15 @@ internal sealed record ContainingIEnumerable public NestedWithIEnumerable? Source { get; set; } } internal sealed record NestedWithIEnumerable(string Name, IEnumerable Addresses); + + public class ClassWithArrayConstructorParameter + { + public ClassWithArrayConstructorParameter(string[] arrayField = null) + { + ArrayField = arrayField; + } + + public string[] ArrayField { get; } + } } } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs index a652e96983265d..07cbb5eb7af320 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/Common/ConfigurationBinderTests.cs @@ -3081,6 +3081,25 @@ public void TestBindingEmptyArrayToNullIEnumerable() Assert.Equal(Array.Empty(), result.StringArray); } + [Fact] + public void TestBindingEmptyArrayToConstructorParameter() + { + string jsonConfig = """ + { + "ArrayField": [] + } + """; + + var configuration = new ConfigurationBuilder() + .AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(jsonConfig))) + .Build(); + + ClassWithArrayConstructorParameter result = configuration.Get(); + + Assert.NotNull(result); + Assert.Empty(result.ArrayField); + } + [Fact] public void TestBindingNestedIEnumerable() {