Есть ли какая-то CacheDependency в System.Runtime.Caching?

Я слышал, что в .NET 4 появился новый API кэширования.

Итак, старый добрый System.Web.Caching.Cache (который, кстати, все еще присутствует в .NET 4) имеет возможность устанавливать так называемые объекты CacheDependency, чтобы определить, просрочен ли кэшированный элемент или нет.

Можно также указать пользовательскую логику для определения того, можно ли использовать кэшированный элемент, создав собственный подкласс из CacheDependency.

Мне любопытно, есть ли способ обеспечить такую ​​логику в новом API?


person Venemo    schedule 22.05.2010    source источник
comment
@Steven - я имею в виду API, предоставленный в сборке System.Runtime.Caching в .NET 4. (Извините, я не знаю, что такое Velocity.)   -  person Venemo    schedule 23.05.2010


Ответы (2)


Я еще не использовал его, но классы, полученные из ChangeMonitor Class служит той же цели.

person Ben Robinson    schedule 22.05.2010

Использование System.Web.Caching.Cache с CacheDependency было построено примерно так:

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

С System.Runtime.Caching это перемещается в CacheItemPolicy ChangeMonitors . Приведенный выше пример изменяется на следующее:

CacheItemPolicy policy = new CacheItemPolicy();
policy.ChangeMonitors.Add(MemoryCache.Default.CreateCacheEntryChangeMonitor(new List<string> { "dependentOnThisKey" }));
cacheInstance.Add("someCacheKey", new object(), policy);
person Daniel Ballinger    schedule 12.01.2021