ValidationInterceptor.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Abp.Aspects;
  2. using Abp.Dependency;
  3. using Castle.DynamicProxy;
  4. namespace Abp.Runtime.Validation.Interception
  5. {
  6. /// <summary>
  7. /// This interceptor is used intercept method calls for classes which's methods must be validated.
  8. /// </summary>
  9. public class ValidationInterceptor : IInterceptor
  10. {
  11. private readonly IIocResolver _iocResolver;
  12. public ValidationInterceptor(IIocResolver iocResolver)
  13. {
  14. _iocResolver = iocResolver;
  15. }
  16. public void Intercept(IInvocation invocation)
  17. {
  18. if (AbpCrossCuttingConcerns.IsApplied(invocation.InvocationTarget, AbpCrossCuttingConcerns.Validation))
  19. {
  20. invocation.Proceed();
  21. return;
  22. }
  23. using (var validator = _iocResolver.ResolveAsDisposable<MethodInvocationValidator>())
  24. {
  25. validator.Object.Initialize(invocation.MethodInvocationTarget, invocation.Arguments);
  26. validator.Object.Validate();
  27. }
  28. invocation.Proceed();
  29. }
  30. }
  31. }