11

I heard that .NET 4 has a new caching API.

Okay, so the good old System.Web.Caching.Cache (which is, by the way, still there in .NET 4) has the ability to set so-called CacheDependency objects to determine whether a cached item is expired or not.

One can also specify custom logic for determining whether a cached item is still useable or not by deriving a custom subclass from CacheDependency.

I'm curious, is there a way to provide such a logic in the new API?

Venemo
  • 18,515
  • 13
  • 84
  • 125
  • @Steven - I mean the API provided in the System.Runtime.Caching assembly in .NET 4. (Sorry, I don't know what Velocity is.) – Venemo May 22 '10 at 21:34

2 Answers2

20

I haven't really used it yet but classes derived from ChangeMonitor Class appear to serve a similar purpose.

Ben Robinson
  • 21,601
  • 5
  • 62
  • 79
0

Using System.Web.Caching.Cache with a CacheDependency was constructed something like the following:

CacheDependency cacheDependency = new System.Web.Caching.CacheDependency(null, new string[] { "dependentOnThisKey" });
cacheInstance.Add("someCacheKey", new object(), cacheDependency);

With System.Runtime.Caching this moves into the CacheItemPolicy ChangeMonitors. The above example changes to the following:

CacheItemPolicy policy = new CacheItemPolicy();
policy.ChangeMonitors.Add(MemoryCache.Default.CreateCacheEntryChangeMonitor(new List<string> { "dependentOnThisKey" }));
cacheInstance.Add("someCacheKey", new object(), policy);
Daniel Ballinger
  • 13,187
  • 11
  • 69
  • 96