public IDictionary <CacheKey, CacheObject> GetCollection(CacheKeyMatchEvaluator cacheKeyMatchEvaluator) { lock (this) { var cacheObjects = new Dictionary <CacheKey, CacheObject>(); try { var cacheEnum = _cache.GetEnumerator(); while (cacheEnum.MoveNext()) { var cacheKey = new CacheKey(cacheEnum.Current.Key); var cacheObject = cacheEnum.Current.Value as CacheObject; if ((cacheKeyMatchEvaluator != null && cacheKeyMatchEvaluator(cacheKey)) || cacheKeyMatchEvaluator == null) { if (!cacheObjects.ContainsKey(cacheKey)) { cacheObjects.Add(cacheKey, cacheObject); } } } } catch (Exception ex) { Utility.ErrorLog(ex.Message, ex); } return(cacheObjects); } }
public void Remove(CacheKeyMatchEvaluator cacheKeyMatchEvaluator) { lock (this) { var cacheObjects = GetCollection(cacheKeyMatchEvaluator); foreach (KeyValuePair <CacheKey, CacheObject> keyValuePair in cacheObjects) { Remove(keyValuePair.Key); } } }