Last active
August 29, 2015 14:01
-
-
Save billzhuang/7deaac6ec079af485bc8 to your computer and use it in GitHub Desktop.
CCL count
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Page Language="C#" AutoEventWireup="true" ViewStateMode="Disabled" Inherits="System.Web.UI.Page" %> | |
<%@ Import Namespace="System.Reflection" %> | |
<script runat="server"> | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
try | |
{ | |
var asms = AppDomain.CurrentDomain.GetAssemblies(); | |
var asm = asms.FirstOrDefault(a => a.ManifestModule.Name == "EFSchools.Englishtown.Common.dll"); | |
if (asm == null) | |
{ | |
// 4.0 version | |
asm = asms.FirstOrDefault(a => a.ManifestModule.Name == "EFSchools.Englishtown.dll"); | |
var serviceType = asm.GetType("EFSchools.Englishtown.ContentConfiguration.ContentConfigurationSvc"); | |
var service = DependencyResolver.Current.GetService(serviceType); | |
var instanceField = serviceType.GetField("_selectionManager", BindingFlags.NonPublic | BindingFlags.Instance); | |
var instance = instanceField.GetValue(service); | |
var cclType = instance.GetType(); | |
var cacheMgrField = cclType.GetMethod("get_CacheManager", BindingFlags.NonPublic | BindingFlags.Instance); | |
var cacheMgr = cacheMgrField.Invoke(instance, null); | |
var elementCacheField = cacheMgr.GetType().BaseType.GetMethod("get_ElementCache", BindingFlags.Public | BindingFlags.Instance); | |
var elementCache = elementCacheField.Invoke(cacheMgr, null); | |
var cacheKeyMethed = elementCache.GetType().GetMethod("get_Keys", BindingFlags.Public | BindingFlags.Instance); | |
var cacheKey = cacheKeyMethed.Invoke(elementCache, null); | |
var countField = cacheKey.GetType().GetMethod("get_Count", BindingFlags.Public | BindingFlags.Instance); | |
var result = countField.Invoke(cacheKey, null); | |
Response.Write(result.ToString() + Environment.NewLine); | |
} | |
else | |
{ | |
// 2.0 version | |
var cclType = asm.GetType("EFSchools.Englishtown.ContentConfigurationET.SelectionManager"); | |
var cachemgrType = asm.GetType("EFSchools.Englishtown.ContentConfigurationET.SelectionManagerCacheManager"); | |
var instanceField = cclType.GetField("Instance", BindingFlags.Public | BindingFlags.Static); | |
var instance = instanceField.GetValue(cclType); | |
var cacheMgrField = cclType.GetField("_cacheMgr", BindingFlags.NonPublic | BindingFlags.Instance); | |
var cacheMgr = cacheMgrField.GetValue(instance); | |
var elementCacheField = cachemgrType.BaseType.GetField("_elementCache", BindingFlags.NonPublic | BindingFlags.Instance); | |
var elementCache = elementCacheField.GetValue(cacheMgr); | |
var cacheKeyMethed = elementCache.GetType().GetMethod("get_Keys", BindingFlags.Public | BindingFlags.Instance); | |
var cacheKey = cacheKeyMethed.Invoke(elementCache, null); | |
var countField = cacheKey.GetType().GetMethod("get_Count", BindingFlags.Public | BindingFlags.Instance); | |
var result = countField.Invoke(cacheKey, null); | |
Response.Write(result + Environment.NewLine); | |
} | |
} | |
catch (Exception ex) | |
{ | |
Response.Write(ex.Message + Environment.NewLine); | |
Response.Write(ex.StackTrace + Environment.NewLine); | |
} | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
change to unified version