Skip to content

Commit bb8699d

Browse files
committed
doc: 更新 Lookup 示例
1 parent 58494cb commit bb8699d

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/BootstrapBlazor.Server/Services/DemoLookupService.cs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
// See the LICENSE file in the project root for more information.
44
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
55

6+
using System.Collections.Concurrent;
7+
68
namespace Microsoft.Extensions.DependencyInjection;
79

810
/// <summary>
@@ -18,6 +20,8 @@ internal class DemoLookupService(IServiceProvider provider) : LookupServiceBase
1820
/// <returns></returns>
1921
public override IEnumerable<SelectedItem>? GetItemsByKey(string? key, object? data) => null;
2022

23+
private static readonly ConcurrentDictionary<string, List<SelectedItem>> _cache = [];
24+
2125
/// <summary>
2226
/// <inheritdoc/>
2327
/// </summary>
@@ -26,17 +30,28 @@ internal class DemoLookupService(IServiceProvider provider) : LookupServiceBase
2630
/// <returns></returns>
2731
public override async Task<IEnumerable<SelectedItem>?> GetItemsByKeyAsync(string? key, object? data)
2832
{
29-
await Task.Delay(1);
30-
3133
IEnumerable<SelectedItem>? items = null;
3234
if (key == "Foo.Complete")
3335
{
34-
var localizer = provider.GetRequiredService<IStringLocalizer<Foo>>();
35-
items = new List<SelectedItem>()
36+
// 使用缓存技术防止多次调用提高应用性能
37+
if (_cache.TryGetValue(key, out var value))
3638
{
37-
new() { Value = "True", Text = localizer["True"].Value },
38-
new() { Value = "False", Text = localizer["False"].Value }
39-
};
39+
items = value;
40+
}
41+
else
42+
{
43+
// 模拟异步延时实战中大概率从数据库中获得数据
44+
await Task.Delay(1);
45+
46+
var localizer = provider.GetRequiredService<IStringLocalizer<Foo>>();
47+
var v = new List<SelectedItem>()
48+
{
49+
new() { Value = "True", Text = localizer["True"].Value },
50+
new() { Value = "False", Text = localizer["False"].Value }
51+
};
52+
_cache.TryAdd(key, v);
53+
items = v;
54+
}
4055
}
4156
return items;
4257
}

0 commit comments

Comments
 (0)