I want to retrieve all the cache objects that are added using MemoryCache.
I tried the below but it is not retrieving them
System.Web.HttpContext.Current.Cache.GetEnumerator();
System.Web.HttpRuntime.Cache.GetEnumerator();
Note: Retreive all means not just what i know and created, i mean every cache object that gets created in the application.
This is what i found (it may help some one)
foreach (var item in MemoryCache.Default)
{
//add the item.keys to list
}
return list;
Here is a better way to enumerate and get the result:
public virtual List<T> GetCache<T>()
{
List<T> list = new List<T>();
IDictionaryEnumerator cacheEnumerator = (IDictionaryEnumerator)((IEnumerable)Cache).GetEnumerator();
while (cacheEnumerator.MoveNext())
list.Add((T) cacheEnumerator.Value);
return list;
}
This should also work: MemoryCache.Default.ToList();