/// <summary> /// Initialises a new instance of <see cref="FeatureStateProvider"/>. /// </summary> /// <param name="featureProvider">The feature provider.</param> /// <param name="configuration">The configuration.</param> public FeatureStateProvider(IFeatureProvider featureProvider, IConfiguration configuration) { _featureProvider = Ensure.IsNotNull(featureProvider, nameof(featureProvider)); _featuresConfigurationRoot = Ensure.IsNotNull(configuration, nameof(configuration)).GetSection("Features"); _tenantsConfigurationRoot = configuration.GetSection("Tenants"); _rootScope = new FeatureStateProviderScope(_featuresConfigurationRoot, featureProvider, null); }
/// <inheritdoc /> public void BeginTenantScope(TenantId tenantId) { if (tenantId.Equals(TenantId.Empty) || tenantId.Equals(TenantId.Default)) { return; } if (!_scopes.TryGetValue(tenantId, out FeatureStateProviderScope scope)) { scope = new FeatureStateProviderScope(_tenantsConfigurationRoot.GetSection($"{tenantId}:Features"), _featureProvider, _rootScope); _scopes.TryAdd(tenantId, scope); } }
/// <summary> /// Initialises a new instance of <see cref="FeatureStateProviderScope"/> /// </summary> /// <param name="section">The configuration section.</param> /// <param name="featureProvider">The feature provider</param> /// <param name="rootScope">[Optional] The root scope.</param> public FeatureStateProviderScope(IConfigurationSection section, IFeatureProvider featureProvider, FeatureStateProviderScope rootScope = null) { _section = Ensure.IsNotNull(section, nameof(section)); _featureProvider = Ensure.IsNotNull(featureProvider, nameof(featureProvider)); _rootScope = rootScope; }