diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index b444c814a51..1eb7e4c700e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.9.3-beta03 + 9.9.3 diff --git a/src/BootstrapBlazor/Extensions/ObjectExtensions.cs b/src/BootstrapBlazor/Extensions/ObjectExtensions.cs index 435fa8350c7..a644209337e 100644 --- a/src/BootstrapBlazor/Extensions/ObjectExtensions.cs +++ b/src/BootstrapBlazor/Extensions/ObjectExtensions.cs @@ -282,7 +282,9 @@ private static void EnsureInitialized(this object? instance, bool isAutoInitiali } // Reflection performance needs to be optimized here - foreach (var propertyInfo in instance.GetType().GetProperties().Where(p => p.PropertyType.IsClass && p.PropertyType != typeof(string))) + foreach (var propertyInfo in instance.GetType().GetProperties().Where(p => p.PropertyType.IsClass + && p.PropertyType != typeof(string) + && p.CanWrite)) { var type = propertyInfo.PropertyType; var value = propertyInfo.GetValue(instance, null); diff --git a/test/UnitTest/Extensions/ObjectExtensionsTest.cs b/test/UnitTest/Extensions/ObjectExtensionsTest.cs index 687535a04d0..73ffd82e807 100644 --- a/test/UnitTest/Extensions/ObjectExtensionsTest.cs +++ b/test/UnitTest/Extensions/ObjectExtensionsTest.cs @@ -318,6 +318,11 @@ public void CreateInstance_Ok() // 接口类型不报错 Assert.Null(ObjectExtensions.CreateInstance(true)); + + var bar = ObjectExtensions.CreateInstance(true); + Assert.NotNull(bar); + Assert.NotNull(bar.Foo); + Assert.Null(bar.Bar); } private interface MockInterface @@ -332,6 +337,15 @@ private class MockComplexObject public (string Name, int Count)[]? Test { get; set; } } + private class MockObject + { + public string? Name { get; set; } + + public Foo? Foo { get; set; } + + public Foo? Bar { get; } + } + private class MockStatic { private static int _test;