mirror of https://github.com/abpframework/abp.git
7 changed files with 116 additions and 1 deletions
@ -0,0 +1,26 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.Extensions.Configuration; |
|||
|
|||
namespace Volo.Abp.Features; |
|||
|
|||
public class ConfigurationFeatureValueProvider : FeatureValueProvider |
|||
{ |
|||
public const string ConfigurationNamePrefix = "Features:"; |
|||
|
|||
public const string ProviderName = "C"; |
|||
|
|||
public override string Name => ProviderName; |
|||
|
|||
protected IConfiguration Configuration { get; } |
|||
|
|||
public ConfigurationFeatureValueProvider(IFeatureStore featureStore, IConfiguration configuration) |
|||
: base(featureStore) |
|||
{ |
|||
Configuration = configuration; |
|||
} |
|||
|
|||
public override Task<string?> GetOrNullAsync(FeatureDefinition feature) |
|||
{ |
|||
return Task.FromResult(Configuration[ConfigurationNamePrefix + feature.Name]); |
|||
} |
|||
} |
|||
@ -0,0 +1,44 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Microsoft.Extensions.Configuration; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Features; |
|||
|
|||
namespace Volo.Abp.FeatureManagement; |
|||
|
|||
public class ConfigurationFeatureManagementProvider : IFeatureManagementProvider, ISingletonDependency |
|||
{ |
|||
public string Name => ConfigurationFeatureValueProvider.ProviderName; |
|||
|
|||
protected IConfiguration Configuration { get; } |
|||
|
|||
public ConfigurationFeatureManagementProvider(IConfiguration configuration) |
|||
{ |
|||
Configuration = configuration; |
|||
} |
|||
|
|||
public virtual bool Compatible(string providerName) |
|||
{ |
|||
return providerName == Name; |
|||
} |
|||
|
|||
public virtual Task<IAsyncDisposable> HandleContextAsync(string providerName, string providerKey) |
|||
{ |
|||
return Task.FromResult<IAsyncDisposable>(NullAsyncDisposable.Instance); |
|||
} |
|||
|
|||
public virtual Task<string> GetOrNullAsync(FeatureDefinition feature, string providerKey) |
|||
{ |
|||
return Task.FromResult(Configuration[ConfigurationFeatureValueProvider.ConfigurationNamePrefix + feature.Name]); |
|||
} |
|||
|
|||
public virtual Task SetAsync(FeatureDefinition feature, string value, string providerKey) |
|||
{ |
|||
throw new AbpException($"Can not set a feature value to the application configuration."); |
|||
} |
|||
|
|||
public virtual Task ClearAsync(FeatureDefinition feature, string providerKey) |
|||
{ |
|||
throw new AbpException($"Can not set a feature value to the application configuration."); |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using JetBrains.Annotations; |
|||
using Volo.Abp.Features; |
|||
|
|||
namespace Volo.Abp.FeatureManagement; |
|||
|
|||
public static class ConfigurationValueFeatureManagerExtensions |
|||
{ |
|||
public static Task<string> GetOrNullConfigurationAsync(this IFeatureManager featureManager, [NotNull] string name, bool fallback = true) |
|||
{ |
|||
return featureManager.GetOrNullAsync(name, ConfigurationFeatureValueProvider.ProviderName, null, fallback); |
|||
} |
|||
|
|||
public static Task<List<FeatureNameValue>> GetAllConfigurationAsync(this IFeatureManager featureManager, bool fallback = true) |
|||
{ |
|||
return featureManager.GetAllAsync(ConfigurationFeatureValueProvider.ProviderName, null, fallback); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue