Поскольку вы устанавливаете скользящее окончание, не всегда ли это 10 минут с момента, когда вы обращались к нему? если объект имеет значение NULL, кэш-запись истек, а если нет, то срок действия (в приведенном выше коде) всегда равен 10 минутам с момента проверки?
Или у вас может быть базовый объект (все ваши кэшируемые объекты наследуются) с временем истечения срока действия в качестве свойства, которое устанавливается при добавлении кеша. Когда вы извлекаете объект, вы проверяете свойство, и у вас есть время истечения, чтобы рассчитать разницу. Просто мысль.
Как сказано, сохраните значение срока действия после сохранения объекта в кеш памяти,
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;
}