From 8d9e3e09f8046ab71114103a67e7d9669e4bc717 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 29 Jan 2024 09:37:42 +0800 Subject: [PATCH] Improve --- .../PermissionValueProviderManager.cs | 17 ++++++++--------- .../Abp/Features/FeatureValueProviderManager.cs | 17 ++++++++--------- .../Abp/Settings/SettingValueProviderManager.cs | 17 ++++++++--------- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProviderManager.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProviderManager.cs index 09b2da2acb..aebd14f36e 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProviderManager.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProviderManager.cs @@ -9,29 +9,28 @@ namespace Volo.Abp.Authorization.Permissions; public class PermissionValueProviderManager : IPermissionValueProviderManager, ISingletonDependency { - public IReadOnlyList ValueProviders => GetProviders(); + public IReadOnlyList ValueProviders => _lazyProviders.Value; private readonly Lazy> _lazyProviders; protected AbpPermissionOptions Options { get; } + protected IServiceProvider ServiceProvider { get; } public PermissionValueProviderManager( IServiceProvider serviceProvider, IOptions options) { Options = options.Value; + ServiceProvider = serviceProvider; - _lazyProviders = new Lazy>( - () => Options - .ValueProviders - .Select(c => serviceProvider.GetRequiredService(c) as IPermissionValueProvider) - .ToList()!, - true - ); + _lazyProviders = new Lazy>(GetProviders, true); } protected virtual List GetProviders() { - var providers = _lazyProviders.Value; + var providers = Options + .ValueProviders + .Select(type => (ServiceProvider.GetRequiredService(type) as IPermissionValueProvider)!) + .ToList(); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1); if(multipleProviders != null) diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs index 98d73dd4e4..c793ee8ce5 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs @@ -9,29 +9,28 @@ namespace Volo.Abp.Features; public class FeatureValueProviderManager : IFeatureValueProviderManager, ISingletonDependency { - public IReadOnlyList ValueProviders => GetProviders(); + public IReadOnlyList ValueProviders => _lazyProviders.Value; private readonly Lazy> _lazyProviders; protected AbpFeatureOptions Options { get; } + protected IServiceProvider ServiceProvider { get; } public FeatureValueProviderManager( IServiceProvider serviceProvider, IOptions options) { Options = options.Value; + ServiceProvider = serviceProvider; - _lazyProviders = new Lazy>( - () => Options - .ValueProviders - .Select(c => serviceProvider.GetRequiredService(c) as IFeatureValueProvider) - .ToList()!, - true - ); + _lazyProviders = new Lazy>(GetProviders, true); } protected virtual List GetProviders() { - var providers = _lazyProviders.Value; + var providers = Options + .ValueProviders + .Select(type => (ServiceProvider.GetRequiredService(type) as IFeatureValueProvider)!) + .ToList(); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1); if(multipleProviders != null) diff --git a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs index c13f884e98..116fae5643 100644 --- a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs +++ b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs @@ -9,9 +9,10 @@ namespace Volo.Abp.Settings; public class SettingValueProviderManager : ISettingValueProviderManager, ISingletonDependency { - public List Providers => GetProviders(); + public List Providers => _lazyProviders.Value; protected AbpSettingOptions Options { get; } + protected IServiceProvider ServiceProvider { get; } private readonly Lazy> _lazyProviders; public SettingValueProviderManager( @@ -20,19 +21,17 @@ public class SettingValueProviderManager : ISettingValueProviderManager, ISingle { Options = options.Value; + ServiceProvider = serviceProvider; - _lazyProviders = new Lazy>( - () => Options - .ValueProviders - .Select(type => serviceProvider.GetRequiredService(type) as ISettingValueProvider) - .ToList()!, - true - ); + _lazyProviders = new Lazy>(GetProviders, true); } protected virtual List GetProviders() { - var providers = _lazyProviders.Value; + var providers = Options + .ValueProviders + .Select(type => (ServiceProvider.GetRequiredService(type) as ISettingValueProvider)!) + .ToList(); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1); if(multipleProviders != null)