public override void Configure(System.Xml.XmlElement element) { base.Configure(element); if (element.HasAttribute("availableMemoryLimit")) { availableMemoryLimit = Single.Parse(element.GetAttribute("availableMemoryLimit")); } else { availableMemoryLimit = 96.0f; } if (element.HasAttribute("miserInterval")) { miserInterval = TimeSpan.Parse(element.GetAttribute("miserInterval")); } else { miserInterval = TimeSpan.FromMinutes(1); } XmlElement volatileElement = (XmlElement) element.SelectSingleNode("volatileCache"); if (volatileElement.HasAttribute("type")) { Type type = Type.GetType(volatileElement.GetAttribute("type")); volatileCache = (CacheBase) type.Assembly.CreateInstance(type.FullName); volatileCache.Configure(volatileElement); } XmlElement persistentElement = (XmlElement) element.SelectSingleNode("persistentCache"); if (persistentElement.HasAttribute("type")) { Type type = Type.GetType(persistentElement.GetAttribute("type")); persistentCache = (CacheBase) type.Assembly.CreateInstance(type.FullName); persistentCache.Configure(persistentElement); } Type cacheBaseType = typeof(CacheBase); getCachedItemMethod = cacheBaseType.GetMethod("GetCachedItem", BindingFlags.Instance | BindingFlags.NonPublic); purgeMethod = cacheBaseType.GetMethod("Purge", BindingFlags.Instance | BindingFlags.NonPublic); miserTimer = new Timer(new TimerCallback(MiserTimerCallback), null, miserInterval, miserInterval); }