private IHttpHandler GetHandlerSubSequent(HttpContext context, string requestType, string url, string pathTranslated)
 {
     if (this.cachedResult is IHttpHandler)
     {
         return((IHttpHandler)this.cachedResult);
     }
     if (this.cachedResult is IHttpHandlerFactory)
     {
         IHttpHandlerFactory cachedResult = (IHttpHandlerFactory)this.cachedResult;
         return(XamlHttpHandlerFactory.HandlerWrapper.Create(cachedResult.GetHandler(context, requestType, url, pathTranslated), cachedResult));
     }
     if (!(this.cachedResult is Type))
     {
         throw FxTrace.Exception.AsError((ConfigurationErrorsException)this.cachedResult);
     }
     return((IHttpHandler)XamlHttpHandlerFactory.CreateInstance((Type)this.cachedResult));
 }
            private IHttpHandler GetHandlerFirstTime(HttpContext context, string requestType, string url, string pathTranslated)
            {
                Type type;
                ConfigurationErrorsException exception;

                if (this.hostedXamlType == null)
                {
                    this.hostedXamlType = this.GetCompiledCustomString(context.Request.AppRelativeCurrentExecutionFilePath);
                }
                if (XamlHostingConfiguration.TryGetHttpHandlerType(url, this.hostedXamlType, out type))
                {
                    if (TD.HttpHandlerPickedForUrlIsEnabled())
                    {
                        TD.HttpHandlerPickedForUrl(url, this.hostedXamlType.FullName, type.FullName);
                    }
                    if (typeof(IHttpHandler).IsAssignableFrom(type))
                    {
                        IHttpHandler handler = (IHttpHandler)XamlHttpHandlerFactory.CreateInstance(type);
                        if (handler.IsReusable)
                        {
                            this.cachedResult = handler;
                            return(handler);
                        }
                        this.cachedResult = type;
                        return(handler);
                    }
                    if (typeof(IHttpHandlerFactory).IsAssignableFrom(type))
                    {
                        IHttpHandlerFactory factory = (IHttpHandlerFactory)XamlHttpHandlerFactory.CreateInstance(type);
                        this.cachedResult = factory;
                        return(XamlHttpHandlerFactory.HandlerWrapper.Create(factory.GetHandler(context, requestType, url, pathTranslated), factory));
                    }
                    exception         = new ConfigurationErrorsException(System.Xaml.Hosting.SR.NotHttpHandlerType(url, this.hostedXamlType, type.FullName));
                    this.cachedResult = exception;
                    throw FxTrace.Exception.AsError(exception);
                }
                exception         = new ConfigurationErrorsException(System.Xaml.Hosting.SR.HttpHandlerForXamlTypeNotFound(url, this.hostedXamlType, "system.xaml.hosting/httpHandlers"));
                this.cachedResult = exception;
                throw FxTrace.Exception.AsError(exception);
            }