Browse Source

Improve

pull/18823/head
liangshiwei 3 years ago
parent
commit
8d9e3e09f8
  1. 17
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProviderManager.cs
  2. 17
      framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs
  3. 17
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs

17
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 class PermissionValueProviderManager : IPermissionValueProviderManager, ISingletonDependency
{ {
public IReadOnlyList<IPermissionValueProvider> ValueProviders => GetProviders(); public IReadOnlyList<IPermissionValueProvider> ValueProviders => _lazyProviders.Value;
private readonly Lazy<List<IPermissionValueProvider>> _lazyProviders; private readonly Lazy<List<IPermissionValueProvider>> _lazyProviders;
protected AbpPermissionOptions Options { get; } protected AbpPermissionOptions Options { get; }
protected IServiceProvider ServiceProvider { get; }
public PermissionValueProviderManager( public PermissionValueProviderManager(
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IOptions<AbpPermissionOptions> options) IOptions<AbpPermissionOptions> options)
{ {
Options = options.Value; Options = options.Value;
ServiceProvider = serviceProvider;
_lazyProviders = new Lazy<List<IPermissionValueProvider>>( _lazyProviders = new Lazy<List<IPermissionValueProvider>>(GetProviders, true);
() => Options
.ValueProviders
.Select(c => serviceProvider.GetRequiredService(c) as IPermissionValueProvider)
.ToList()!,
true
);
} }
protected virtual List<IPermissionValueProvider> GetProviders() protected virtual List<IPermissionValueProvider> 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); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1);
if(multipleProviders != null) if(multipleProviders != null)

17
framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureValueProviderManager.cs

@ -9,29 +9,28 @@ namespace Volo.Abp.Features;
public class FeatureValueProviderManager : IFeatureValueProviderManager, ISingletonDependency public class FeatureValueProviderManager : IFeatureValueProviderManager, ISingletonDependency
{ {
public IReadOnlyList<IFeatureValueProvider> ValueProviders => GetProviders(); public IReadOnlyList<IFeatureValueProvider> ValueProviders => _lazyProviders.Value;
private readonly Lazy<List<IFeatureValueProvider>> _lazyProviders; private readonly Lazy<List<IFeatureValueProvider>> _lazyProviders;
protected AbpFeatureOptions Options { get; } protected AbpFeatureOptions Options { get; }
protected IServiceProvider ServiceProvider { get; }
public FeatureValueProviderManager( public FeatureValueProviderManager(
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IOptions<AbpFeatureOptions> options) IOptions<AbpFeatureOptions> options)
{ {
Options = options.Value; Options = options.Value;
ServiceProvider = serviceProvider;
_lazyProviders = new Lazy<List<IFeatureValueProvider>>( _lazyProviders = new Lazy<List<IFeatureValueProvider>>(GetProviders, true);
() => Options
.ValueProviders
.Select(c => serviceProvider.GetRequiredService(c) as IFeatureValueProvider)
.ToList()!,
true
);
} }
protected virtual List<IFeatureValueProvider> GetProviders() protected virtual List<IFeatureValueProvider> 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); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1);
if(multipleProviders != null) if(multipleProviders != null)

17
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingValueProviderManager.cs

@ -9,9 +9,10 @@ namespace Volo.Abp.Settings;
public class SettingValueProviderManager : ISettingValueProviderManager, ISingletonDependency public class SettingValueProviderManager : ISettingValueProviderManager, ISingletonDependency
{ {
public List<ISettingValueProvider> Providers => GetProviders(); public List<ISettingValueProvider> Providers => _lazyProviders.Value;
protected AbpSettingOptions Options { get; } protected AbpSettingOptions Options { get; }
protected IServiceProvider ServiceProvider { get; }
private readonly Lazy<List<ISettingValueProvider>> _lazyProviders; private readonly Lazy<List<ISettingValueProvider>> _lazyProviders;
public SettingValueProviderManager( public SettingValueProviderManager(
@ -20,19 +21,17 @@ public class SettingValueProviderManager : ISettingValueProviderManager, ISingle
{ {
Options = options.Value; Options = options.Value;
ServiceProvider = serviceProvider;
_lazyProviders = new Lazy<List<ISettingValueProvider>>( _lazyProviders = new Lazy<List<ISettingValueProvider>>(GetProviders, true);
() => Options
.ValueProviders
.Select(type => serviceProvider.GetRequiredService(type) as ISettingValueProvider)
.ToList()!,
true
);
} }
protected virtual List<ISettingValueProvider> GetProviders() protected virtual List<ISettingValueProvider> 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); var multipleProviders = providers.GroupBy(p => p.Name).FirstOrDefault(x => x.Count() > 1);
if(multipleProviders != null) if(multipleProviders != null)

Loading…
Cancel
Save