我System.Runtime.Caching
用来存储一个List<MyType>
. 问题是当我检索它返回的集合时System.Object
.
我试过把它扔回去List<MyType>
,但没有运气。
如果我尝试as
,我会得到一个null
var siteNodes = _cacheManager.Get(Constants.CacheKeys.SiteNodesCacheKey)
as List<SiteNode>;
存储和检索我List<MyType>
的缓存的正确方法是什么?
我正在使用缓存管理器类来访问缓存。
public void Add(string key, object data, int cacheTime,
CacheEntryRemovedCallback callback)
{
_callback = callback;
Add(key, data, cacheTime);
}
public object Get(string key)
{
return Cache[key];
}
var siteNodes = _cacheManager.Get(Constants.CacheKeys.SiteNodesCacheKey)
as List<SiteNode>;
这是添加到缓存的方法
public void Add(string key, object data, int cacheTime,
CacheEntryRemovedCallback callback)
{
_callback = callback;
Add(key, data, cacheTime);
}
这是与我的缓存管理器类交互的方法。
private void CacheData(IEnumerable<object> data, string cacheKey)
{
if (_cacheManager.Contains(cacheKey))
{
_cacheManager.Remove(cacheKey);
}
_cacheManager.Add(cacheKey, data, DefaultCacheTime);
}
上述方法是我的问题的根源,为了保持我的方法可重用,我将第一个参数作为对象的 IEnumerable,它正在更改我正在存储的数据。
所以我创建了以下覆盖..
private void CacheData(List<SiteNode> data, string cacheKey)
{
if (_cacheManager.Contains(cacheKey))
{
_cacheManager.Remove(cacheKey);
}
_cacheManager.Add(cacheKey, data, DefaultCacheTime);
}
奇迹般有效!