@@ -10,28 +10,58 @@ namespace Common;
1010
1111public static class ConfigurationExtension
1212{
13+ private static List < string > _emptyList = new List < string > ( ) ;
14+
1315 public static IHostBuilder AddConfiguration < T > ( this IHostBuilder hostBuilder , string ? keyVaultUrl = null ) where T : class
1416 {
1517 var configuration = CreateConfiguration ( keyVaultUrl ) ;
1618 return BuildIOptionsDependency < T > ( hostBuilder , configuration ) ;
1719 }
20+ /// <summary>
21+ /// Create
22+ /// </summary>
23+ /// <typeparam name="T"></typeparam>
24+ /// <param name="hostBuilder"></param>
25+ /// <param name="config"></param>
26+ /// <param name="keyVaultUrl"></param>
27+ /// <returns></returns>
1828 public static IHostBuilder AddConfiguration < T > ( this IHostBuilder hostBuilder , out T config , string ? keyVaultUrl = null ) where T : class
1929 {
2030 var configuration = CreateConfiguration ( keyVaultUrl ) ;
2131
2232 config = configuration . Get < T > ( ) ;
2333 return BuildIOptionsDependency < T > ( hostBuilder , configuration ) ;
2434 }
35+ /// <summary>
36+ /// Creates and bind configuration that is not registered to IOptions
37+ /// </summary>
38+ /// <typeparam name="T"></typeparam>
39+ /// <param name="keyVaultUrl"></param>
40+ /// <param name="configFilePaths"></param>
41+ /// <returns></returns>
42+ public static T GetConfiguration < T > ( string ? keyVaultUrl = null , List < string > ? configFilePaths = null ) where T : class
43+ {
44+ var configuration = CreateConfiguration ( keyVaultUrl , configFilePaths ) ;
45+ return configuration . Get < T > ( ) ;
46+
47+ }
2548
26- private static IConfiguration CreateConfiguration ( string ? keyVaultUrl = null )
49+
50+
51+
52+ private static IConfiguration CreateConfiguration ( string ? keyVaultUrl = null , List < string > ? configFilePaths = null )
2753 {
2854
2955 var loggerFactory = LoggerFactory . Create ( builder => builder . AddConsole ( ) ) ;
3056 var logger = loggerFactory . CreateLogger ( nameof ( ConfigurationExtension ) ) ;
57+
3158 logger . LogInformation ( "Building Configuration" ) ;
3259 ConfigurationBuilder configBuilder = new ConfigurationBuilder ( ) ;
60+
3361 keyVaultUrl ??= Environment . GetEnvironmentVariable ( "KeyVaultConnectionString" ) ;
34- if ( keyVaultUrl != null ) {
62+
63+ if ( keyVaultUrl != null )
64+ {
3565 try
3666 {
3767 configBuilder . AddAzureKeyVault ( new Uri ( keyVaultUrl ) , new DefaultAzureCredential ( ) , new AzureKeyVaultConfigurationOptions ( ) ) ;
@@ -41,6 +71,13 @@ private static IConfiguration CreateConfiguration(string? keyVaultUrl = null)
4171 logger . LogError ( ex , "Unable to add Azure KeyVault" ) ;
4272 }
4373 }
74+ if ( configFilePaths != null )
75+ {
76+ foreach ( var configFile in configFilePaths )
77+ {
78+ configBuilder . AddJsonFile ( configFile ) ;
79+ }
80+ }
4481 configBuilder . AddEnvironmentVariables ( ) ;
4582 return configBuilder . Build ( ) ;
4683 }
0 commit comments