Skip to content

Commit 7239ed0

Browse files
perf(GetUniqueName): add cache for assembly GetUniqueName method (#6996)
* feat: GetUniqueName方法添加缓存 * feat: 添加特性缓存 * chore: bump version 9.11.5-beta04 * test: 更新单元测试 * revert: 撤销更改 * refactor: 撤销 GetAttribute 缓存 * revert: 撤销命名空间更改 * revert: 撤销单元测试更改 * refactor: 精简代码 --------- Co-Authored-By: Diego <[email protected]> Co-authored-by: Argo Zhang <[email protected]>
1 parent 9662123 commit 7239ed0

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup Condition="'$(VisualStudioVersion)' == '17.0'">
4-
<Version>9.11.5-beta03</Version>
4+
<Version>9.11.5-beta04</Version>
55
</PropertyGroup>
66

77
<PropertyGroup Condition="'$(VisualStudioVersion)' == '18.0'">
8-
<Version>10.0.0-rc.2.1.2</Version>
8+
<Version>10.0.0-rc.2.1.3</Version>
99
</PropertyGroup>
1010

1111
<ItemGroup>

src/BootstrapBlazor/Extensions/AssemblyExtensions.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,5 @@ static class AssemblyExtensions
1414
/// </summary>
1515
/// <param name="assembly"></param>
1616
/// <returns></returns>
17-
public static string GetUniqueName(this Assembly assembly) => assembly.IsCollectible
18-
? $"{assembly.GetName().Name}-{assembly.GetHashCode()}"
19-
: $"{assembly.GetName().Name}";
17+
public static string GetUniqueName(this Assembly assembly) => CacheManager.GetUniqueName(assembly);
2018
}

src/BootstrapBlazor/Services/CacheManager.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,25 @@ private List<ICacheEntry> GetAllValues(MemoryCache cache)
216216
}
217217
#endif
218218

219+
#region Assembly
220+
/// <summary>
221+
/// 获得唯一类型名称方法
222+
/// </summary>
223+
/// <param name="assembly"></param>
224+
/// <returns></returns>
225+
public static string GetUniqueName(Assembly assembly)
226+
{
227+
//key不拼接,作为当前静态实例唯一标识,因为GetUniqueName方法会被频繁调用
228+
return Instance.GetOrCreate(assembly, _ =>
229+
{
230+
return assembly.IsCollectible
231+
? $"{assembly.GetName().Name}-{assembly.GetHashCode()}"
232+
: $"{assembly.GetName().Name}";
233+
});
234+
}
235+
236+
#endregion
237+
219238
#region Count
220239
public static int ElementCount(object? value)
221240
{

test/UnitTest/Components/BootstrapModuleComponentBaseTest.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ public void InvokeVoidAsync_Ok()
1818
}
1919

2020
[Fact]
21-
public void InvokeAsync_Ok()
21+
public async Task InvokeAsync_Ok()
2222
{
2323
var cut = Context.RenderComponent<MockObjectReferenceComponent>();
24-
cut.InvokeAsync(() => cut.Instance.InvokeAsyncTest());
24+
await cut.InvokeAsync(() => cut.Instance.InvokeAsyncTest());
2525
Assert.True(cut.Instance.InvokeRunner);
2626
}
2727

@@ -32,11 +32,11 @@ class MockComponent : BootstrapModuleComponentBase
3232

3333
public async Task InvokeVoidAsyncTest()
3434
{
35-
await base.InvokeVoidAsync(Id);
36-
await base.InvokeVoidAsync(Id, TimeSpan.FromMinutes(1));
35+
await InvokeVoidAsync(Id);
36+
await InvokeVoidAsync(Id, TimeSpan.FromMinutes(1));
3737

3838
using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(1000);
39-
await base.InvokeVoidAsync(Id, cancellationTokenSource.Token);
39+
await InvokeVoidAsync(Id, cancellationTokenSource.Token);
4040

4141
InvokeVoidRunner = true;
4242
}
@@ -49,11 +49,11 @@ class MockObjectReferenceComponent : Select<string>
4949

5050
public async Task InvokeAsyncTest()
5151
{
52-
await base.InvokeAsync<string>(Id);
53-
await base.InvokeAsync<string>(Id, TimeSpan.FromMinutes(1));
52+
await InvokeAsync<string>(Id);
53+
await InvokeAsync<string>(Id, TimeSpan.FromMinutes(1));
5454

5555
using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(1000);
56-
await base.InvokeAsync<string>(Id, cancellationTokenSource.Token);
56+
await InvokeAsync<string>(Id, cancellationTokenSource.Token);
5757

5858
InvokeRunner = true;
5959
}

test/UnitTest/Extensions/AssemblyExtensionsTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ public class AssemblyExtensionsTest
1313
[Fact]
1414
public void GetUniqueName_Ok()
1515
{
16+
var sc = new ServiceCollection();
17+
sc.AddBootstrapBlazor();
18+
19+
var provider = sc.BuildServiceProvider();
20+
var cacheManager = provider.GetRequiredService<ICacheManager>();
21+
cacheManager.GetStartTime();
22+
1623
var type = Type.GetType("BootstrapBlazor.Components.AssemblyExtensions, BootstrapBlazor");
1724
Assert.NotNull(type);
1825

0 commit comments

Comments
 (0)