diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index c708743b93..454ade5476 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -89,28 +89,27 @@ namespace Volo.Abp.FeatureManagement foreach (var feature in featureDefinitions) { - FeatureNameValueWithGrantedProvider value = null; - + var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null); foreach (var provider in providerList) { - var pk = provider.Name == providerName ? providerKey : null; - var providerValue = await provider.GetOrNullAsync( - feature, - pk - ); + string pk = null; + if (provider.Compatible(providerName)) + { + pk = providerKey; + } - if (providerValue != null) + var value = await provider.GetOrNullAsync(feature, pk); + if (value != null) { - value = new FeatureNameValueWithGrantedProvider(feature.Name, providerValue) - { - Provider = new FeatureValueProviderInfo(provider.Name, pk) - }; + featureNameValueWithGrantedProvider.Value = value; + featureNameValueWithGrantedProvider.Provider = new FeatureValueProviderInfo(provider.Name, pk); + break; } } - if (value != null) + if (featureNameValueWithGrantedProvider.Value != null) { - featureValues[feature.Name] = value; + featureValues[feature.Name] = featureNameValueWithGrantedProvider; } }