Подтвердить что ты не робот

Как использовать System.Web.Caching в asp.net?

У меня есть класс, который выглядит так:

using System.Collections.Generic;
using System.Web.Caching;

public static class MyCache
{
    private static string cacheKey = "mykey";

    public static Dictionary<string, bool> GetCacheValue(bool bypassCache)
    {
        var settings = Cache[cacheKey] as Dictionary<string, bool>; // error on this line

        // ...etc...

        return settings
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что это не скомпилируется. Компилятор говорит, что Cache не может использоваться так, как я это делаю. Здесь сообщение:

'System.Web.Caching.Cache' is a 'type' but is used like a 'variable'

Это меня озадачивает. Я googled API-интерфейс ASP.NET Cache и нашел много примеров Cache, используемых таким образом. Вот один из примеров:

// http://www.4guysfromrolla.com/articles/100902-1.aspx
value = Cache("key")

      - or -

value = Cache.Get("key")

Когда я пытаюсь использовать Cache.Get(), я получаю еще одну ошибку, говоря, что это не статический метод.

Очевидно, мне нужно инициализировать экземпляр Cache. Это правильный способ использования этого API? Следующий вопрос: кэшированная информация сохраняется в разных экземплярах?

Спасибо за вашу помощь.

4b9b3361

Ответ 1

System.Web.Caching.Cache - это класс - вы видите людей, использующих свойство с именем Cache, которое является экземпляром System.Web.Caching.Cache. Если вы используете его вне класса, который предоставляет вам свойство Cache, обратитесь к нему с помощью System.Web.HttpRuntime.Cache:

var settings = System.Web.HttpRuntime.Cache[cacheKey] as Dictionary<string, bool>;