private void OnRegistering(object sender, ServiceRegisterEventArgs e) { if (e.ServiceType != typeof(PipelineManager)) { ((AutofacServiceRegisterEventArgs)e).Registration.EnableClassInterceptors(new ProxyGenerationOptions { Selector = new ServiceInterceptorSelector((IServiceContainer)sender) }).FindConstructorsWith(type => { #if NetCore // Fix the constructor injection in the interception mechanism. if (type.IsAssignableTo <IProxyTargetAccessor>()) { var constructors = InjectionAttribute.GetConstructors(type.GetTypeInfo().BaseType).ToArray(); if (constructors.Length > 0) { return(constructors.Select(ctor => type.GetTypeInfo().GetConstructor(new[] { typeof(IInterceptor[]), typeof(IInterceptorSelector) }.Concat(ctor.GetParameters().Select(parameter => parameter.ParameterType)).ToArray())).ToArray()); } } return(type.GetConstructors()); #else // Fix the constructor injection in the interception mechanism. if (type.IsAssignableTo <IProxyTargetAccessor>()) { var constructors = InjectionAttribute.GetConstructors(type.BaseType).ToArray(); if (constructors.Length > 0) { return(constructors.Select(ctor => type.GetConstructor(new[] { typeof(IInterceptor[]), typeof(IInterceptorSelector) }.Concat(ctor.GetParameters().Select(parameter => parameter.ParameterType)).ToArray())).ToArray()); } } return(type.GetConstructors()); #endif }); } }
private void OnRegistering(object sender, ServiceRegisterEventArgs e) { if (ShouldIntercept(e.ImplementType)) { ((WindsorServiceRegisterEventArgs)e).Registration.Interceptors <ServiceInterceptor>(); } }
private void OnRegistering(object sender, ServiceRegisterEventArgs e) { if (e.ServiceType != typeof(PipelineManager) && ShouldIntercept(e.ImplementType)) { ((StructureMapServiceRegisterEventArgs)e).Configuration.AddInterceptor(new DynamicProxyInterceptor(e.ServiceType, e.ImplementType)); } }
private void OnRegistering(object sender, ServiceRegisterEventArgs e) { if (e.ServiceType != typeof(PipelineManager) && ShouldIntercept(e.ImplementType)) { var binding = ((NinjectServiceRegisterEventArgs)e).Binding; var container = (IServiceContainer)sender; (binding as IBindingOnSyntax <object>)?.Intercept().With(new NinjectServiceInterceptor(container.GetInstance <PipelineManager>(), container)); } }
private void OnRegistering(object sender, ServiceRegisterEventArgs e) { var injectionMembers = ((UnityServiceRegisterEventArgs)e).InjectionMembers; if (!injectionMembers.Any(member => member is DefaultInterceptor || member is Interceptor)) { injectionMembers.Add(new Interceptor <VirtualMethodInterceptor>()); } injectionMembers.Add(new InterceptionBehavior <UnityInjectionBehavior>()); }