@@ -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