public virtual PageData ConvertToTyped(PageData page) { Type type = GetPageTypeType(page.PageTypeID); var castingTest = page as TypedPageData; if (type == null || castingTest != null) { if (type != null) { if (_logger.IsDebugEnabled) { _logger.Debug(string.Format("Cache hit on {0}", type.Name)); } } return(page); } var populated = Activator.CreateAndPopulateTypedInstance(page, type); if (page.WorkPageID != 0) { if (_logger.IsDebugEnabled) { _logger.Debug(string.Format("Skipping page with work ID {0}", page.WorkPageID)); } return(populated); } // Save to cache if its a final published version var pageProvider = DataFactory.Instance.GetPageProvider(page.PageLink); var cacheSettings = new CacheSettings(PageCacheTimeout); if (_logger.IsDebugEnabled) { _logger.Debug(string.Format("Saving to cache {0}", type.Name)); } string key = DataFactoryCache.PageCommonCacheKey(page.PageLink); string str2 = DataFactoryCache.PageLanguageCacheKey(page.PageLink, page.LanguageBranch); if (cacheSettings.CancelCaching) { CacheManager.RemoveLocalOnly(key); } else { if (CacheManager.RuntimeCacheGet(key) == null) { CacheManager.RuntimeCacheInsert(key, DateTime.UtcNow.Ticks, new CacheDependency(null, new string[] { "DataFactoryCache.MasterKey", pageProvider.ProviderCacheKey }), Cache.NoAbsoluteExpiration, PageCacheTimeout); } string[] filenames = (cacheSettings.FileNames.Count > 0) ? cacheSettings.FileNames.ToArray() : null; List <string> list = new List <string>(new string[] { "DataFactoryCache.MasterKey", pageProvider.ProviderCacheKey, key }); list.AddRange(cacheSettings.CacheKeys); if (page.IsMasterLanguageBranch) { CacheManager.RuntimeCacheInsert(DataFactoryCache.PageMasterLanguageCacheKey(page.PageLink), populated, new CacheDependency(filenames, list.ToArray()), cacheSettings.AbsoluteExpiration, cacheSettings.SlidingExpiration); } CacheManager.RuntimeCacheInsert(str2, populated, new CacheDependency(filenames, list.ToArray()), cacheSettings.AbsoluteExpiration, cacheSettings.SlidingExpiration); } return(populated); }