public Interceptor[] GetPropertyInterceptors(Type interceptorType, PropertyInfo property, out MethodInfo[] methods) { if (_interceptorResolver == null) { throw new InvalidOperationException("Weld component manager is not yet deployed"); } var resolvable = new InterceptorResolvable(interceptorType, property); var interceptors = _interceptorResolver.Resolve(resolvable).ToArray(); if (interceptors.Any()) { methods = new[] { property.SetMethod, property.GetMethod }.Where(x => x != null).ToArray(); foreach (var method in methods) { InterceptionValidator.ValidateInterceptableMethod(method, resolvable); } } else { methods = new MethodInfo[0]; } return(interceptors); }
public override void OnIntercept(IInvocation invocation) { if (_validator == null) { _validator = new InterceptionValidator(s_infoProvider, invocation.Context.MethodInfo); } var context = new ValidationContext(invocation.Context); _validator.ValidateArguments(context); invocation.Proceed(); _validator.ValidateReturnValue(context); }
public Interceptor[] GetMethodInterceptors(Type interceptorType, MethodInfo methodInfo) { if (_interceptorResolver == null) { throw new InvalidOperationException("Weld component manager is not yet deployed"); } var resolvable = new InterceptorResolvable(interceptorType, methodInfo); var interceptors = _interceptorResolver.Resolve(resolvable).ToArray(); if (interceptors.Any()) { InterceptionValidator.ValidateInterceptableMethod(methodInfo, resolvable); } return(interceptors); }
public Interceptor[] GetClassInterceptors(Type interceptorType, IComponent component, out MethodInfo[] methods) { if (_interceptorResolver == null) { throw new InvalidOperationException("Weld component manager is not yet deployed"); } var intercetorResolvable = new InterceptorResolvable(interceptorType, component); var interceptors = _interceptorResolver.Resolve(intercetorResolvable).ToArray(); var allowPartial = interceptors.All(x => x.AllowPartialInterception); if (interceptors.Any()) { InterceptionValidator.ValidateInterceptableClass(component.Type, intercetorResolvable, allowPartial, out methods); } else { methods = new MethodInfo[0]; } return(interceptors); }