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));
     }
 }
示例#4
0
 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));
     }
 }
示例#5
0
        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>());
        }