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); }