2013-09-27 14 views
17

Ich habe eine Klasse, die wie folgt aussieht:Wie System.Web.Caching in asp.net zu verwenden?

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 
    } 
} 

das Problem, das ich habe, ist, dass dies wird nicht kompilieren. Der Compiler sagt Cache kann nicht so verwendet werden, wie ich es mache. Hier ist die Nachricht:

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

Das perplex mich. Ich habe die ASP.NET Cache API gegoogelt und viele Beispiele von Cache gefunden, die auf diese Weise verwendet werden. Hier ist eines dieser Beispiele:

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

     - or - 

value = Cache.Get("key") 

Wenn ich Cache.Get() Versuchen Sie es mit erhalte ich eine andere Fehlermeldung, dass es nicht eine statische Methode ist.

Offensichtlich muss ich eine Instanz von Cache initialisieren. Ist dies der richtige Weg, diese API zu verwenden? Eine weitere Frage ist, ob zwischengespeicherte Informationen zwischen Instanzen bestehen bleiben.

Danke für Ihre Hilfe.

+6

Verwenden 'HttpRuntime.Cache' zu' cache' Instanz zu erhalten. – MarcinJuraszek

Antwort

23

System.Web.Caching.Cache ist eine Klasse - Sie Menschen mit einer Eigenschaft namens sehen Cache, dass eine Instanz von System.Web.Caching.Cache ist. Wenn Sie es außerhalb einer Klasse mit sind, die Sie mit dem Cache Eigenschaft bietet es System.Web.HttpRuntime.Cache mit Zugang:

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

Ehrfürchtig. Ich liebe es, wenn es eine einfache Erklärung gibt! – quakkels