public static IServiceContainer RegisterDynamicProxy(this IServiceContainer container,
                                                             IAspectConfiguration aspectConfig       = null,
                                                             Action <IAspectConfiguration> configure = null)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }
            aspectConfig = aspectConfig ?? new AspectConfiguration();

            foreach (var m in _nonAspect)
            {
                aspectConfig.NonAspectPredicates.AddNamespace(m);
            }

            configure?.Invoke(aspectConfig);

            container.RegisterInstance <IAspectConfiguration>(aspectConfig)
            .Register(typeof(IManyEnumerable <>), typeof(ManyEnumerable <>))
            .RegisterInstance <IServiceContainer>(container)
            .Register <IServiceProvider, LightInjectServiceResolver>()
            .Register <IServiceResolver, LightInjectServiceResolver>()
            .Register <IAspectContextFactory, AspectContextFactory>()
            .Register <IAspectActivatorFactory, AspectActivatorFactory>()
            .Register <IProxyGenerator, ProxyGenerator>()
            .Register <IParameterInterceptorSelector, ParameterInterceptorSelector>()
            .Register <IPropertyInjectorFactory, PropertyInjectorFactory>()
            .Register <IInterceptorCollector, InterceptorCollector>()
            .Register <IInterceptorSelector, ConfigureInterceptorSelector>()
            .Register <IInterceptorSelector, AttributeInterceptorSelector>()
            .Register <IAdditionalInterceptorSelector, AttributeAdditionalInterceptorSelector>()
            .Register <IAspectValidatorBuilder, AspectValidatorBuilder>()
            .Register <IAspectBuilderFactory, AspectBuilderFactory>()
            .Register <IProxyTypeGenerator, ProxyTypeGenerator>()
            .Register <IAspectCachingProvider, AspectCachingProvider>()
            .Register <IAspectExceptionWrapper, AspectExceptionWrapper>();

            container.Decorate(aspectConfig.CreateDecorator());

            return(container);
        }
Beispiel #2
0
 private void RegisterContainer()
 {
     _diContainer.RegisterInstance(typeof(IServiceFactory), _diContainer);
 }