В ASP.Net, как лучше всего хранить int в system.web.caching? - PullRequest
3 голосов
/ 27 января 2012

В настоящее время я должен преобразовать int в string и сохранить в кеше, очень сложный

int test = 123;
System.Web.HttpContext.Current.Cache.Insert("key", test.ToString()); // to save the cache
test = Int32.Parse(System.Web.HttpContext.Current.Cache.Get("key").ToString()); // to get the cache

Есть ли более быстрый способ без изменения типа снова и снова?

Ответы [ 2 ]

6 голосов
/ 27 января 2012

Вы можете хранить любые объекты в кеше. Подпись метода:

Cache.Insert(string, object)

так что вам не нужно конвертировать в строку перед вставкой. Однако вам нужно будет разыграть при получении из кеша:

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

Это повлечет за собой штраф за бокс / распаковку с примитивными типами, но значительно меньше, чем каждый раз через строку.

1 голос
/ 27 января 2012

Вы можете реализовать свой собственный метод, который обрабатывает его, чтобы вызывающий код выглядел чище.

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" );
...