Skip to content

Commit 512f25c

Browse files
committed
refactor: 重构代码提高可读性
1 parent 2f59a8d commit 512f25c

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

src/BootstrapBlazor/Services/IPLocator/DefaultIpLocatorFactory.cs

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,31 @@ namespace BootstrapBlazor.Components;
1010
/// <summary>
1111
/// IIPLocatorFactory 接口实现类
1212
/// </summary>
13-
class DefaultIpLocatorFactory : IIpLocatorFactory
13+
class DefaultIpLocatorFactory(IServiceProvider provider, IOptionsMonitor<BootstrapBlazorOptions> options) : IIpLocatorFactory
1414
{
15-
private readonly Dictionary<string, IIpLocatorProvider> _providers = [];
16-
17-
private readonly IServiceProvider _serviceProvider;
18-
19-
private readonly IOptionsMonitor<BootstrapBlazorOptions> _options;
20-
21-
public DefaultIpLocatorFactory(IServiceProvider provider, IOptionsMonitor<BootstrapBlazorOptions> options)
22-
{
23-
_serviceProvider = provider;
24-
_options = options;
25-
26-
foreach (var p in provider.GetServices<IIpLocatorProvider>())
27-
{
28-
if (p.Key != null)
29-
{
30-
_providers[p.Key] = p;
31-
}
32-
}
33-
}
15+
private Dictionary<string, IIpLocatorProvider>? _providers = null;
3416

3517
/// <summary>
3618
/// 创建 <see cref="IIpLocatorProvider"/> 实例方法
3719
/// </summary>
3820
/// <param name="key"></param>
3921
public IIpLocatorProvider Create(string? key = null)
4022
{
41-
var providerKey = key;
42-
if (string.IsNullOrEmpty(key))
23+
_providers ??= GenerateProviders();
24+
var providerKey = key ?? options.CurrentValue.IpLocatorOptions.ProviderName;
25+
return string.IsNullOrEmpty(providerKey) ? _providers.Values.Last() : _providers[providerKey];
26+
}
27+
28+
private Dictionary<string, IIpLocatorProvider> GenerateProviders()
29+
{
30+
var providers = new Dictionary<string, IIpLocatorProvider>();
31+
foreach (var p in provider.GetServices<IIpLocatorProvider>())
4332
{
44-
providerKey = _options.CurrentValue.IpLocatorOptions.ProviderName;
33+
if (p.Key != null)
34+
{
35+
providers[p.Key] = p;
36+
}
4537
}
46-
return string.IsNullOrEmpty(providerKey) ? _providers.Values.Last() : _providers[providerKey];
38+
return providers;
4739
}
4840
}

0 commit comments

Comments
 (0)