【发布时间】:2016-09-24 22:06:42
【问题描述】:
我厌倦了将填充的 IReadOnlyList 设置为缓存,但它始终为空:
CacheItemPolicy cip = new CacheItemPolicy(); // no expiration
IReadOnlyList<T> dataList = [populate var]
if (dataList != null)
{
MemoryCache.Default.Set(_cacheKey, dataList, cip);
}
缓存中没有设置任何内容。但是,如果我将其更改为:
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 对象?
【问题讨论】:
-
如何填充
dataList列表? -
它实际上是在一个函数中传递的,为了保持示例简单,我删除了包装调用的函数。
-
函数返回的对象的类型是什么? (不是函数返回类型,而是特定情况下返回值的实际类型)。我不认为变量类型很重要,但对象的类型可能很重要。
标签: c# .net .net-4.6 memorycache