diff --git a/src/BootstrapBlazor/Extensions/ObjectExtensions.cs b/src/BootstrapBlazor/Extensions/ObjectExtensions.cs index d631022682c..435fa8350c7 100644 --- a/src/BootstrapBlazor/Extensions/ObjectExtensions.cs +++ b/src/BootstrapBlazor/Extensions/ObjectExtensions.cs @@ -246,6 +246,11 @@ internal static void Clone(this TModel source, TModel item) /// An instance of the specified type with initialized properties. public static TItem? CreateInstance(bool isAutoInitializeModelProperty = false) { + if(typeof(TItem).IsInterface) + { + return default; + } + var instance = Activator.CreateInstance(); if (isAutoInitializeModelProperty) { diff --git a/test/UnitTest/Extensions/ObjectExtensionsTest.cs b/test/UnitTest/Extensions/ObjectExtensionsTest.cs index 90beda9ef93..687535a04d0 100644 --- a/test/UnitTest/Extensions/ObjectExtensionsTest.cs +++ b/test/UnitTest/Extensions/ObjectExtensionsTest.cs @@ -315,6 +315,14 @@ public void CreateInstance_Ok() var instance = ObjectExtensions.CreateInstance(false); Assert.NotNull(instance); Assert.Null(instance.Test); + + // 接口类型不报错 + Assert.Null(ObjectExtensions.CreateInstance(true)); + } + + private interface MockInterface + { + string? Name { get; set; } } private class MockComplexObject