public override void RegisterInterceptor(Type modelType, ContentDataInterceptor interceptor)
        {
            Validator.ThrowIfNull("type", (object)modelType);
            Validator.ThrowIfNull("interceptor", (object)interceptor);

            lock (SyncRoot)
            {
                if (IsInterceptableType(modelType))
                {
                    var    interceptorType         = interceptor.GetType();
                    string interceptorReferenceKey = interceptorType.Name + modelType.AssemblyQualifiedName;

                    if (!Container.Kernel.HasComponent(interceptorReferenceKey))
                    {
                        Container.Register(
                            Component.For <IInterceptor>().ImplementedBy(interceptorType).LifeStyle.Singleton.Named(interceptorReferenceKey));
                    }

                    if (!Container.Kernel.HasComponent(modelType))
                    {
                        Container.Register(
                            Component
                            .For(modelType)
                            .ImplementedBy(modelType)
                            .LifeStyle.Transient
                            .Interceptors(
                                InterceptorReference.ForKey(interceptorReferenceKey),
                                InterceptorReference.ForType <EPiPropertiesInterceptor>())
                            .SelectedWith(ContentProxyInterceptorSelector)
                            .Anywhere
                            .Proxy.Hook(ServiceLocator.Current.GetInstance <ContentDataInterceptorHook>()
                                        ) /* !!! */
                            );
                    }
                }
                else
                {
                    if (!Container.Kernel.HasComponent(modelType))
                    {
                        Container.Register(Component.For(modelType).ImplementedBy(modelType).LifeStyle.Transient);
                    }
                }

                RegisterPropertyInterceptor();
            }
        }
        public override void RegisterInterceptor(Type modelType, ContentDataInterceptor interceptor)
        {
            Validator.ThrowIfNull("type", (object)modelType);
            Validator.ThrowIfNull("interceptor", (object)interceptor);

            lock (SyncRoot)
            {
                if (IsInterceptableType(modelType))
                {
                    var interceptorType = interceptor.GetType();
                    string interceptorReferenceKey = interceptorType.Name + modelType.AssemblyQualifiedName;

                    if (!Container.Kernel.HasComponent(interceptorReferenceKey))
                    {
                        Container.Register(
                            Component.For<IInterceptor>().ImplementedBy(interceptorType).LifeStyle.Singleton.Named(interceptorReferenceKey));
                    }

                    if (!Container.Kernel.HasComponent(modelType))
                    {
                        Container.Register(
                            Component
                                .For(modelType)
                                .ImplementedBy(modelType)
                                .LifeStyle.Transient
                                .Interceptors(
                                    InterceptorReference.ForKey(interceptorReferenceKey),
                                    InterceptorReference.ForType<EPiPropertiesInterceptor>())
                                .SelectedWith(ContentProxyInterceptorSelector)
                                .Anywhere
                                .Proxy.Hook(ServiceLocator.Current.GetInstance<ContentDataInterceptorHook>()
                                ) /* !!! */
                        );
                    }
                }
                else
                {
                    if (!Container.Kernel.HasComponent(modelType))
                    {
                        Container.Register(Component.For(modelType).ImplementedBy(modelType).LifeStyle.Transient);
                    }
                }

                RegisterPropertyInterceptor();
            }
        }
Beispiel #3
0
 public ExtendedContentTypeModelScanner(ITypeScannerLookup typeScannerLookup, ContentTypeModelRegister typeModelRegister, ContentModelValidator modelValidator, ContentTypeModelRepository contentTypeModelRepository, IContentTypeModelAssigner contentTypeModelAssigner, ContentDataInterceptorHandler modelTypeInterceptorHandler, ContentDataInterceptor modelTypeInterceptor, IContentTypeModelFilter[] filters, IEnumerable <ContentScannerExtension> registerExtensions, IAvailableModelSettingsRepository availableContentTypeService, IContentTypeModelScannerEventsRaiser contentTypeModelScannerEvents) : base(typeScannerLookup, typeModelRegister, modelValidator, contentTypeModelRepository, contentTypeModelAssigner, modelTypeInterceptorHandler, modelTypeInterceptor, filters, registerExtensions, availableContentTypeService, contentTypeModelScannerEvents)
 {
     TypeScannerLookup = typeScannerLookup;
 }