Skip to content

Instantly share code, notes, and snippets.

@billzhuang
Last active August 29, 2015 14:01
Show Gist options
  • Save billzhuang/7deaac6ec079af485bc8 to your computer and use it in GitHub Desktop.
Save billzhuang/7deaac6ec079af485bc8 to your computer and use it in GitHub Desktop.
CCL count
<%@ 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>
@billzhuang
Copy link
Author

change to unified version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment