diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 78c373a09a7..67b04463a54 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,11 +1,11 @@  - 9.11.5-beta03 + 9.11.5-beta04 - 10.0.0-rc.2.1.2 + 10.0.0-rc.2.1.3 diff --git a/src/BootstrapBlazor/Extensions/AssemblyExtensions.cs b/src/BootstrapBlazor/Extensions/AssemblyExtensions.cs index d5b31f26ab3..6f6557a1b86 100644 --- a/src/BootstrapBlazor/Extensions/AssemblyExtensions.cs +++ b/src/BootstrapBlazor/Extensions/AssemblyExtensions.cs @@ -14,7 +14,5 @@ static class AssemblyExtensions /// /// /// - public static string GetUniqueName(this Assembly assembly) => assembly.IsCollectible - ? $"{assembly.GetName().Name}-{assembly.GetHashCode()}" - : $"{assembly.GetName().Name}"; + public static string GetUniqueName(this Assembly assembly) => CacheManager.GetUniqueName(assembly); } diff --git a/src/BootstrapBlazor/Services/CacheManager.cs b/src/BootstrapBlazor/Services/CacheManager.cs index 90eca88ad94..93a3d44ce62 100644 --- a/src/BootstrapBlazor/Services/CacheManager.cs +++ b/src/BootstrapBlazor/Services/CacheManager.cs @@ -216,6 +216,25 @@ private List GetAllValues(MemoryCache cache) } #endif + #region Assembly + /// + /// 获得唯一类型名称方法 + /// + /// + /// + public static string GetUniqueName(Assembly assembly) + { + //key不拼接,作为当前静态实例唯一标识,因为GetUniqueName方法会被频繁调用 + return Instance.GetOrCreate(assembly, _ => + { + return assembly.IsCollectible + ? $"{assembly.GetName().Name}-{assembly.GetHashCode()}" + : $"{assembly.GetName().Name}"; + }); + } + + #endregion + #region Count public static int ElementCount(object? value) { diff --git a/test/UnitTest/Components/BootstrapModuleComponentBaseTest.cs b/test/UnitTest/Components/BootstrapModuleComponentBaseTest.cs index c7227618a59..f7e96156818 100644 --- a/test/UnitTest/Components/BootstrapModuleComponentBaseTest.cs +++ b/test/UnitTest/Components/BootstrapModuleComponentBaseTest.cs @@ -18,10 +18,10 @@ public void InvokeVoidAsync_Ok() } [Fact] - public void InvokeAsync_Ok() + public async Task InvokeAsync_Ok() { var cut = Context.RenderComponent(); - cut.InvokeAsync(() => cut.Instance.InvokeAsyncTest()); + await cut.InvokeAsync(() => cut.Instance.InvokeAsyncTest()); Assert.True(cut.Instance.InvokeRunner); } @@ -32,11 +32,11 @@ class MockComponent : BootstrapModuleComponentBase public async Task InvokeVoidAsyncTest() { - await base.InvokeVoidAsync(Id); - await base.InvokeVoidAsync(Id, TimeSpan.FromMinutes(1)); + await InvokeVoidAsync(Id); + await InvokeVoidAsync(Id, TimeSpan.FromMinutes(1)); using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(1000); - await base.InvokeVoidAsync(Id, cancellationTokenSource.Token); + await InvokeVoidAsync(Id, cancellationTokenSource.Token); InvokeVoidRunner = true; } @@ -49,11 +49,11 @@ class MockObjectReferenceComponent : Select public async Task InvokeAsyncTest() { - await base.InvokeAsync(Id); - await base.InvokeAsync(Id, TimeSpan.FromMinutes(1)); + await InvokeAsync(Id); + await InvokeAsync(Id, TimeSpan.FromMinutes(1)); using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(1000); - await base.InvokeAsync(Id, cancellationTokenSource.Token); + await InvokeAsync(Id, cancellationTokenSource.Token); InvokeRunner = true; } diff --git a/test/UnitTest/Extensions/AssemblyExtensionsTest.cs b/test/UnitTest/Extensions/AssemblyExtensionsTest.cs index 0dcc43b177b..c3227dfd30c 100644 --- a/test/UnitTest/Extensions/AssemblyExtensionsTest.cs +++ b/test/UnitTest/Extensions/AssemblyExtensionsTest.cs @@ -13,6 +13,13 @@ public class AssemblyExtensionsTest [Fact] public void GetUniqueName_Ok() { + var sc = new ServiceCollection(); + sc.AddBootstrapBlazor(); + + var provider = sc.BuildServiceProvider(); + var cacheManager = provider.GetRequiredService(); + cacheManager.GetStartTime(); + var type = Type.GetType("BootstrapBlazor.Components.AssemblyExtensions, BootstrapBlazor"); Assert.NotNull(type);