| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- using System.Collections.Concurrent;
- using Microsoft.Extensions.Configuration;
- namespace Business.Core.Configuration
- {
- public static class AppConfigurations
- {
- private static readonly ConcurrentDictionary<string, IConfigurationRoot> ConfigurationCache;
- static AppConfigurations()
- {
- ConfigurationCache = new ConcurrentDictionary<string, IConfigurationRoot>();
- }
- public static IConfigurationRoot Get(string path, string? environmentName = null)
- {
- var cacheKey = path + "#" + environmentName;
- return ConfigurationCache.GetOrAdd(
- cacheKey,
- _ => BuildConfiguration(path, environmentName)
- );
- }
- private static IConfigurationRoot BuildConfiguration(string path, string? environmentName = null)
- {
- var builder = new ConfigurationBuilder()
- .SetBasePath(path)
- .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
- if (!environmentName.IsNullOrWhiteSpace())
- {
- builder = builder.AddJsonFile($"appsettings.{environmentName}.json", optional: true);
- }
-
- builder = builder.AddEnvironmentVariables();
- return builder.Build();
- }
- }
- }
|