| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using System;
- using System.Collections.Generic;
- using System.Collections.Immutable;
- using Abp.Configuration.Startup;
- using Abp.Dependency;
- namespace Abp.Configuration
- {
- /// <summary>
- /// Implements <see cref="ISettingDefinitionManager"/>.
- /// </summary>
- internal class SettingDefinitionManager : ISettingDefinitionManager, ISingletonDependency
- {
- private readonly IIocManager _iocManager;
- private readonly ISettingsConfiguration _settingsConfiguration;
- private readonly IDictionary<string, SettingDefinition> _settings;
- /// <summary>
- /// Constructor.
- /// </summary>
- public SettingDefinitionManager(IIocManager iocManager, ISettingsConfiguration settingsConfiguration)
- {
- _iocManager = iocManager;
- _settingsConfiguration = settingsConfiguration;
- _settings = new Dictionary<string, SettingDefinition>();
- }
- public void Initialize()
- {
- var context = new SettingDefinitionProviderContext(this);
- foreach (var providerType in _settingsConfiguration.Providers)
- {
- using (var provider = CreateProvider(providerType))
- {
- foreach (var settings in provider.Object.GetSettingDefinitions(context))
- {
- _settings[settings.Name] = settings;
- }
- }
- }
- }
- public SettingDefinition GetSettingDefinition(string name)
- {
- if (!_settings.TryGetValue(name, out var settingDefinition))
- {
- throw new AbpException("There is no setting defined with name: " + name);
- }
- return settingDefinition;
- }
- public IReadOnlyList<SettingDefinition> GetAllSettingDefinitions()
- {
- return _settings.Values.ToImmutableList();
- }
- private IDisposableDependencyObjectWrapper<SettingProvider> CreateProvider(Type providerType)
- {
- return _iocManager.ResolveAsDisposable<SettingProvider>(providerType);
- }
- }
- }
|