首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MemoryCache不存储IReadOnlyList

MemoryCache不存储IReadOnlyList
EN

Stack Overflow用户
提问于 2016-09-25 06:06:43
回答 1查看 73关注 0票数 1

我尝试将填充的IReadOnlyList设置为缓存,但它始终为空:

代码语言:javascript
复制
CacheItemPolicy cip = new CacheItemPolicy(); // no expiration
IReadOnlyList<T> dataList = [populate var]

if (dataList != null)
{
   MemoryCache.Default.Set(_cacheKey, dataList, cip);
}

缓存中未设置任何内容。但如果我将其更改为:

代码语言:javascript
复制
List<T> list = null;
CacheItemPolicy cip = new CacheItemPolicy(); // no expiration
IReadOnlyList<T> dataList = [populate var]

if (dataList != null)
{
   list = dataList.ToList();       
   MemoryCache.Default.Set(_cacheKey, list, cip);
}

它起作用了。MemoryCache不支持接口或IReadOnlyList对象吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 07:26:41

MemoryCache正在缓存对第一个示例中列表的引用和第二个示例中列表的副本。

一定是因为您的代码重用了作为dataList传入的列表,所以您需要缓存一个副本。调用ToList()会生成一个副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39681393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档