Запрос элементов в HttpContext.Current.Cache - PullRequest
2 голосов
/ 08 сентября 2011

Добавить элементы в этот кэш просто:

HttpContext.Current.Cache.Add(
    string key,
    Object value,
    CacheDependency dependencies,
    DateTime absoluteExpiration,
    TimeSpan slidingExpiration,
    CacheItemPriority priority,
    CacheItemRemovedCallback onRemoveCallback
    );

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

Возможно ли это?Насколько я вижу, я могу только получить имя ключа.

Ссылка: http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx

1 Ответ

5 голосов
/ 08 сентября 2011

Да, вы можете достичь с помощью отражения.

foreach (var t in Cache)
        {
            System.Collections.DictionaryEntry entry = (System.Collections.DictionaryEntry)t;
            object key = entry.Key;
            object obj = Cache.GetType().GetMethod("Get", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(Cache, new object[] { key, 1 });
            PropertyInfo prop = obj.GetType().GetProperty("UtcExpires", BindingFlags.NonPublic | BindingFlags.Instance);
            DateTime expire = (DateTime)prop.GetValue(obj, null);
            Response.Write("<br/>" + key + " : " + expire);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...