小编Cal*_*ero的帖子

MemoryCache 与泛型的正确使用?

我想使用,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:我添加了一些代码来提供意图

c# generics value-type reference-type memorycache

2
推荐指数
1
解决办法
2220
查看次数

标签 统计

c# ×1

generics ×1

memorycache ×1

reference-type ×1

value-type ×1