|
|
|
@ -10,22 +10,19 @@ namespace Volo.Abp.Settings |
|
|
|
{ |
|
|
|
public class SettingDefinitionManager : ISettingDefinitionManager, ISingletonDependency |
|
|
|
{ |
|
|
|
protected Lazy<List<ISettingDefinitionProvider>> Providers { get; } |
|
|
|
|
|
|
|
protected Lazy<IDictionary<string, SettingDefinition>> SettingDefinitions { get; } |
|
|
|
|
|
|
|
protected SettingOptions Options { get; } |
|
|
|
|
|
|
|
private readonly IServiceProvider _serviceProvider; |
|
|
|
protected IServiceProvider ServiceProvider { get; } |
|
|
|
|
|
|
|
public SettingDefinitionManager( |
|
|
|
IOptions<SettingOptions> options, |
|
|
|
IServiceProvider serviceProvider) |
|
|
|
{ |
|
|
|
_serviceProvider = serviceProvider; |
|
|
|
ServiceProvider = serviceProvider; |
|
|
|
Options = options.Value; |
|
|
|
|
|
|
|
Providers = new Lazy<List<ISettingDefinitionProvider>>(CreateSettingProviders, true); |
|
|
|
SettingDefinitions = new Lazy<IDictionary<string, SettingDefinition>>(CreateSettingDefinitions, true); |
|
|
|
} |
|
|
|
|
|
|
|
@ -53,21 +50,21 @@ namespace Volo.Abp.Settings |
|
|
|
return SettingDefinitions.Value.GetOrDefault(name); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual List<ISettingDefinitionProvider> CreateSettingProviders() |
|
|
|
{ |
|
|
|
return Options |
|
|
|
.DefinitionProviders |
|
|
|
.Select(p => _serviceProvider.GetRequiredService(p) as ISettingDefinitionProvider) |
|
|
|
.ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual IDictionary<string, SettingDefinition> CreateSettingDefinitions() |
|
|
|
{ |
|
|
|
var settings = new Dictionary<string, SettingDefinition>(); |
|
|
|
|
|
|
|
foreach (var provider in Providers.Value) |
|
|
|
using (var scope = ServiceProvider.CreateScope()) |
|
|
|
{ |
|
|
|
provider.Define(new SettingDefinitionContext(settings)); |
|
|
|
var providers = Options |
|
|
|
.DefinitionProviders |
|
|
|
.Select(p => scope.ServiceProvider.GetRequiredService(p) as ISettingDefinitionProvider) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
foreach (var provider in providers) |
|
|
|
{ |
|
|
|
provider.Define(new SettingDefinitionContext(settings)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return settings; |
|
|
|
|