123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System.Collections.Concurrent;
- using Microsoft.Extensions.Configuration;
- namespace VCommon.VEntityFrameworkCore.Tests.Configs
- {
- 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, bool addUserSecrets = false)
- {
- var cacheKey = path + "#" + environmentName + "#" + addUserSecrets;
- return _configurationCache.GetOrAdd(
- cacheKey,
- _ => BuildConfiguration(path, environmentName, addUserSecrets)
- );
- }
- private static IConfigurationRoot BuildConfiguration(string path, string environmentName = null, bool addUserSecrets = false)
- {
- 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();
- if (addUserSecrets)
- {
- builder.AddUserSecrets(typeof(AppConfigurations).Assembly);
- }
- return builder.Build();
- }
- }
- }
|