Example #1
0
        internal static IControllerFactory Proxy(this IControllerFactory iControllerFactory, IGlimpseLogger logger)
        {
            if (iControllerFactory.CanSupportDynamicProxy(logger))
            {
                var proxyConfig = new Dictionary <string, IInterceptor>
                {
                    { "CreateController", new CreateControllerInterceptor(logger) }
                };

                var proxyGenerator  = new ProxyGenerator();
                var proxyGenOptions = new ProxyGenerationOptions(new SimpleProxyGenerationHook(logger, proxyConfig.Keys.ToArray()))
                {
                    Selector = new SimpleInterceptorSelector(proxyConfig)
                };
                var newInvoker = (IControllerFactory)proxyGenerator.CreateClassProxy(iControllerFactory.GetType(), proxyGenOptions, proxyConfig.Values.ToArray());

                return(newInvoker);
            }

            logger.Warn("Unable to proxy {0}", iControllerFactory.GetType());

            return(iControllerFactory);



            //if (iControllerFactory is GlimpseControllerFactory) return iControllerFactory;

            //return new GlimpseControllerFactory(iControllerFactory, logger);
        }