2012-01-27 2 views

Répondre

5

Vous pouvez stocker n'importe quel type d'objet dans le cache. La signature de la méthode est:

Cache.Insert(string, object) 

Ainsi, vous n'avez pas besoin de convertir en chaîne avant l'insertion. Vous, cependant, besoin de jeter lorsque vous reprendrez du cache:

int test = 123; 
HttpContext.Current.Cache.Insert("key", test); 
object cacheVal = HttpContext.Current.Cache.Get("key"); 
if(cacheVal != null) 
{ 
    test = (int)cacheVal; 
} 

Cela entraînera une boxe/malus unboxing avec des types primitifs, mais beaucoup moins que passer par la chaîne à chaque fois.

+0

'test = (int) HttpContext.Current.Cache.Get ("clé")' donne erreur, ne peut pas convertir le type '' string' à int', a 'utiliser Parse', et d'utiliser Parse, vous devez utiliser '.ToString()' en premier. –

+2

Il semble que vous n'avez pas stocké un int en premier lieu. Qu'est-ce que 'typeof (HttpContext.Current.Cache.Get (" key ")). ToString()'? – spender

+0

vous avez raison. Mais je ne pense pas que je peux le faire directement, car cache peut-être 'null', et' (int) null' donne une erreur –

1

Vous pouvez implémenter votre propre méthode qui le gère afin que le code appelant semble plus propre.

public void InsertIntIntoCache(string key, int value) 
{ 
    HttpContext.Current.Cache.Insert(key, value); 
} 

public int GetIntCacheValue(string key) 
{ 
    return (int)HttpContext.Current.Cache[key]; 
} 

int test = 123; 
InsertIntIntoCache("key", test); 
test = GetIntCacheValue("key"); 
Questions connexes