如何获取缓存项目的到期日期?

我在MemoryCache中存储一个对象:

void foo() { ObjectCache cache = MemoryCache.Default; SomeClass obj = cache["CACHE_KEY"] as SomeClass; if (null == obj ) { obj = new SomeClass(); .... CacheItemPolicy policy = new CacheItemPolicy(); //update policy.AbsoluteExpiration = DateTime.Now+TimeSpan.FromMinutes(1); cache.Set("CACHE_KEY", obj, policy); } else { //get expiry date } ..... } 

如果缓存包含对象,是否有可能以某种方式获得到期日期?

由于您设置的是滑动过期,是否总是距您访问它的10分钟? 如果对象为null,则缓存条目已过期,如果没有,则过期(在上面的代码中)始终是您检查时间的10分钟?

或者,您可以拥有一个基础对象(所有可缓存对象都inheritance自),并将到期时间作为在添加到缓存时设置的属性。 提取对象时,检查属性并计算差异的到期时间。 只是一个想法。

如上所述,一旦将对象保存到内存缓存中,保存到期值,

 cache.Set(DataKey, DataToStore, policy); cache.Set("MemCahceExpiry", DateAndTime.Now.AddHours(6), policy); 

然后从到期密钥中读取到期日期:

 public static DateTime CheckCachedExpiry() { DateTime MemCacheEXpirayDate = default(DateTime); MemCacheEXpirayDate = Convert.ToDateTime(MemoryCache.Default.Get("MemCahceExpiry")); return MemCacheEXpirayDate; }