2010-11-12 2 views
8

In ASP.NET, c'è qualche ragione per non rendere un insieme di funzioni che Aggiungi/Rimuovi/Ottieni dall'oggetto Cache Statico?Rendere statici i metodi di accesso alla cache

Get() - solo ottiene la voce, alcun motivo per non essere statico
Add(), remove() - Ho letto che l'aggiunta/eliminazione nella cache ha il proprio meccanismo di blocco interno, in modo che possano essere statico senza che io crei il mio lock() {} wrapping.

risposta

10

Essi possono già essere accessibili in un contesto statico attraverso

HttpRuntime.Cache

Procedimento HttpContext.Current.Cache semplicemente avanti per questa chiamata comunque, ancora invocando la HttpContext.Current.Cache possono causare errori di runtime se non è nel ciclo di vita dove HttpContext.Current è disponibile.

rispondere alla tua domanda:

Sì, si potrebbe usare questo per gestire questo. Si dovrebbe qualcosa di simile

public static class StaticCache 
{ 

    public static Add(object obj) 
    {   
     try {    
      HttpRuntime.Cache.Add(obj);    
     } 
     catch(Exception ex) { 
      //log or something    
     }   
    }  
} 

e l'uso sarebbe simile a

StaticCache.Add("bob");

+0

Sta dicendo che può essere statico poiché HttpRuntime.Cache chiamate sono statici? La mia domanda era di mettere le chiamate Cache nei metodi in modo che io possa fare il logging, il controllo degli errori, cambiare i tempi di scadenza, se necessario, ecc. – eych

+1

Wow, non sapevo che esistesse. Ho sempre usato 'HttpContext.Current.Cache' per accedervi staticamente. – Earlz