| 123456789101112131415161718192021222324252627282930313233343536 |
- using Abp.Aspects;
- using Abp.Dependency;
- using Castle.DynamicProxy;
- namespace Abp.Runtime.Validation.Interception
- {
- /// <summary>
- /// This interceptor is used intercept method calls for classes which's methods must be validated.
- /// </summary>
- public class ValidationInterceptor : IInterceptor
- {
- private readonly IIocResolver _iocResolver;
- public ValidationInterceptor(IIocResolver iocResolver)
- {
- _iocResolver = iocResolver;
- }
- public void Intercept(IInvocation invocation)
- {
- if (AbpCrossCuttingConcerns.IsApplied(invocation.InvocationTarget, AbpCrossCuttingConcerns.Validation))
- {
- invocation.Proceed();
- return;
- }
- using (var validator = _iocResolver.ResolveAsDisposable<MethodInvocationValidator>())
- {
- validator.Object.Initialize(invocation.MethodInvocationTarget, invocation.Arguments);
- validator.Object.Validate();
- }
-
- invocation.Proceed();
- }
- }
- }
|