@@ -13,11 +13,38 @@ internal class AzureAppConfigurationRefresherProvider : IConfigurationRefresherP
1313    { 
1414        private  static readonly  PropertyInfo  _propertyInfo  =  typeof ( ChainedConfigurationProvider ) . GetProperty ( "Configuration" ,  BindingFlags . Public  |  BindingFlags . Instance ) ; 
1515
16-         public  IEnumerable < IConfigurationRefresher >  Refreshers  {  get ;  } 
16+         private  readonly  IConfiguration  _configuration ; 
17+         private  readonly  ILoggerFactory  _loggerFactory ; 
18+         private  IEnumerable < IConfigurationRefresher >  _refreshers ; 
19+         private  bool  _rediscoveredRefreshers  =  false ; 
1720
18-         public  AzureAppConfigurationRefresherProvider ( IConfiguration   configuration ,   ILoggerFactory   _loggerFactory ) 
21+         public  IEnumerable < IConfigurationRefresher >   Refreshers 
1922        { 
20-             var  configurationRoot  =  configuration  as  IConfigurationRoot ; 
23+             get 
24+             { 
25+                 // Ensure latest refreshers are discovered if the configuration has changed since the constructor was called 
26+                 if  ( ! _rediscoveredRefreshers ) 
27+                 { 
28+                     _refreshers  =  DiscoverRefreshers ( ) ; 
29+ 
30+                     _rediscoveredRefreshers  =  true ; 
31+                 } 
32+ 
33+                 return  _refreshers ; 
34+             } 
35+         } 
36+ 
37+         public  AzureAppConfigurationRefresherProvider ( IConfiguration  configuration ,  ILoggerFactory  loggerFactory ) 
38+         { 
39+             _configuration  =  configuration  ??  throw  new  ArgumentNullException ( nameof ( configuration ) ) ; 
40+             _loggerFactory  =  loggerFactory ; 
41+ 
42+             _refreshers  =  DiscoverRefreshers ( ) ; 
43+         } 
44+ 
45+         private  IEnumerable < IConfigurationRefresher >  DiscoverRefreshers ( ) 
46+         { 
47+             var  configurationRoot  =  _configuration  as  IConfigurationRoot ; 
2148            var  refreshers  =  new  List < IConfigurationRefresher > ( ) ; 
2249
2350            FindRefreshers ( configurationRoot ,  _loggerFactory ,  refreshers ) ; 
@@ -27,7 +54,7 @@ public AzureAppConfigurationRefresherProvider(IConfiguration configuration, ILog
2754                throw  new  InvalidOperationException ( "Unable to access the Azure App Configuration provider. Please ensure that it has been configured correctly." ) ; 
2855            } 
2956
30-             Refreshers   =  refreshers ; 
57+             return  refreshers ; 
3158        } 
3259
3360        private  void  FindRefreshers ( IConfigurationRoot  configurationRoot ,  ILoggerFactory  loggerFactory ,  List < IConfigurationRefresher >  refreshers ) 
0 commit comments