From d3c44651219e8c8e480a665d0d814949353fd101 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 28 Dec 2020 10:38:45 +0800 Subject: [PATCH] Use IServiceProvider in Interceptors. --- .../Volo/Abp/Auditing/AuditingInterceptor.cs | 19 ++++++++++--------- .../Volo/Abp/Features/FeatureInterceptor.cs | 15 ++++++++------- .../Volo/Abp/Uow/UnitOfWorkInterceptor.cs | 16 ++++++++-------- .../Abp/Validation/ValidationInterceptor.cs | 2 +- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs index 0eef78ed6a..681dc0eb0d 100644 --- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs +++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Aspects; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; @@ -9,16 +10,14 @@ namespace Volo.Abp.Auditing { public class AuditingInterceptor : AbpInterceptor, ITransientDependency { - private readonly IAuditingHelper _auditingHelper; - private readonly IAuditingManager _auditingManager; + private readonly IServiceProvider _serviceProvider; - public AuditingInterceptor(IAuditingHelper auditingHelper, IAuditingManager auditingManager) + public AuditingInterceptor(IServiceProvider serviceProvider) { - _auditingHelper = auditingHelper; - _auditingManager = auditingManager; + _serviceProvider = serviceProvider; } - public async override Task InterceptAsync(IAbpMethodInvocation invocation) + public override async Task InterceptAsync(IAbpMethodInvocation invocation) { if (!ShouldIntercept(invocation, out var auditLog, out var auditLogAction)) { @@ -58,19 +57,21 @@ namespace Volo.Abp.Auditing return false; } - var auditLogScope = _auditingManager.Current; + var auditingManager = _serviceProvider.GetRequiredService(); + var auditLogScope = auditingManager.Current; if (auditLogScope == null) { return false; } - if (!_auditingHelper.ShouldSaveAudit(invocation.Method)) + var auditingHelper = _serviceProvider.GetRequiredService(); + if (!auditingHelper.ShouldSaveAudit(invocation.Method)) { return false; } auditLog = auditLogScope.Log; - auditLogAction = _auditingHelper.CreateAuditLogAction( + auditLogAction = auditingHelper.CreateAuditLogAction( auditLog, invocation.TargetObject.GetType(), invocation.Method, diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs index 7b84593378..aff34d358f 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureInterceptor.cs @@ -1,4 +1,6 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Aspects; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; @@ -7,15 +9,14 @@ namespace Volo.Abp.Features { public class FeatureInterceptor : AbpInterceptor, ITransientDependency { - private readonly IMethodInvocationFeatureCheckerService _methodInvocationFeatureCheckerService; + private readonly IServiceProvider _serviceProvider; - public FeatureInterceptor( - IMethodInvocationFeatureCheckerService methodInvocationFeatureCheckerService) + public FeatureInterceptor(IServiceProvider serviceProvider) { - _methodInvocationFeatureCheckerService = methodInvocationFeatureCheckerService; + _serviceProvider = serviceProvider; } - public async override Task InterceptAsync(IAbpMethodInvocation invocation) + public override async Task InterceptAsync(IAbpMethodInvocation invocation) { if (AbpCrossCuttingConcerns.IsApplied(invocation.TargetObject, AbpCrossCuttingConcerns.FeatureChecking)) { @@ -29,7 +30,7 @@ namespace Volo.Abp.Features protected virtual async Task CheckFeaturesAsync(IAbpMethodInvocation invocation) { - await _methodInvocationFeatureCheckerService.CheckAsync( + await _serviceProvider.GetRequiredService().CheckAsync( new MethodInvocationFeatureCheckerContext( invocation.Method ) diff --git a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs index f5afcea494..c161184071 100644 --- a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs +++ b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs @@ -1,6 +1,7 @@ using System; using System.Threading.Tasks; using JetBrains.Annotations; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; @@ -9,16 +10,14 @@ namespace Volo.Abp.Uow { public class UnitOfWorkInterceptor : AbpInterceptor, ITransientDependency { - private readonly IUnitOfWorkManager _unitOfWorkManager; - private readonly AbpUnitOfWorkDefaultOptions _defaultOptions; + private readonly IServiceProvider _serviceProvider; - public UnitOfWorkInterceptor(IUnitOfWorkManager unitOfWorkManager, IOptions options) + public UnitOfWorkInterceptor(IServiceProvider serviceProvider) { - _unitOfWorkManager = unitOfWorkManager; - _defaultOptions = options.Value; + _serviceProvider = serviceProvider; } - public async override Task InterceptAsync(IAbpMethodInvocation invocation) + public override async Task InterceptAsync(IAbpMethodInvocation invocation) { if (!UnitOfWorkHelper.IsUnitOfWorkMethod(invocation.Method, out var unitOfWorkAttribute)) { @@ -26,7 +25,7 @@ namespace Volo.Abp.Uow return; } - using (var uow = _unitOfWorkManager.Begin(CreateOptions(invocation, unitOfWorkAttribute))) + using (var uow = _serviceProvider.GetRequiredService().Begin(CreateOptions(invocation, unitOfWorkAttribute))) { await invocation.ProceedAsync(); await uow.CompleteAsync(); @@ -41,7 +40,8 @@ namespace Volo.Abp.Uow if (unitOfWorkAttribute?.IsTransactional == null) { - options.IsTransactional = _defaultOptions.CalculateIsTransactional( + var defaultOptions = _serviceProvider.GetRequiredService>().Value; + options.IsTransactional = defaultOptions.CalculateIsTransactional( autoValue: !invocation.Method.Name.StartsWith("Get", StringComparison.InvariantCultureIgnoreCase) ); } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs index d0d9e7594d..b4ce642471 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationInterceptor.cs @@ -13,7 +13,7 @@ namespace Volo.Abp.Validation _methodInvocationValidator = methodInvocationValidator; } - public async override Task InterceptAsync(IAbpMethodInvocation invocation) + public override async Task InterceptAsync(IAbpMethodInvocation invocation) { Validate(invocation); await invocation.ProceedAsync();