我想使用,System.Runtime.Caching.MemoryCache但我想知道如何将它与泛型一起使用。
在下面的例子中,如果T是值类型,我会遇到麻烦。
public T GetItem<T>(string key, Func<T> loadItemFromDb)
{
var cachedItem = (T) memoryCache.Get(key);
if(cachedItem != null)
return cachedItem;
// call db
//put result in cache
// return result
}
Run Code Online (Sandbox Code Playgroud)
MemoryCache.Get(string key)返回null如果确定缓存条目key不存在,它会提高NullReferenceException,因为它试图做(T)null(与T值类型)
我怎么能得到类似的行为T?
编辑:我删除了where T : class因为这个约束阻止了我描述的情况。
编辑 2:我添加了一些代码来提供意图