2013-09-27 18 views
17

Mam klasy, który wygląda tak:Jak korzystać z System.Web.Caching w 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 
    } 
} 

problem mam jest to, że przyzwyczajenie skompilować. Kompilator mówi, że Cache nie może być użyty tak, jak ja to robię. Oto wiadomość:

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

To mnie wprawia w zakłopotanie. Mam googleed na ASP.NET Cache API i znalazłem wiele przykładów Cache używanych w ten sposób. Oto jeden z tych przykładów:

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

     - or - 

value = Cache.Get("key") 

gdy próbuję za pomocą Cache.Get() dostaję kolejny błąd mówiąc, że nie jest to metoda statyczna.

Najwyraźniej muszę zainicjować instancję Cache. Czy to właściwy sposób korzystania z tego interfejsu API? Kolejne pytanie brzmi: czy buforowane informacje występują w różnych instancjach?

Dzięki za pomoc.

+6

Wykorzystanie 'HttpRuntime.Cache' dostać się do' przykład Cache'. – MarcinJuraszek

Odpowiedz

23

System.Web.Caching.Cache jest klasą - widać ludzi stosując właściwość o nazwie Cache który jest instancją z System.Web.Caching.Cache. Jeśli używasz go poza klasą, które oferuje nieruchomości Cache, do niego dostęp za pomocą System.Web.HttpRuntime.Cache:

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

Awesome. Uwielbiam to, gdy istnieje proste wyjaśnienie! – quakkels