加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否可以使用T类型的缓存?

发布时间:2020-12-15 07:40:15 所属栏目:百科 来源:网络整理
导读:将它放入缓存中时,我们可以避免将T转换为Object吗? WeakReference需要使用对象. System.Runtime.Caching.MemoryCache被锁定为类型对象. 自定义词典/集合会导致垃圾收集器出现问题,或者您必须运行自己的垃圾收集器(单独的线程)? 是否有可能拥有两全其美?
将它放入缓存中时,我们可以避免将T转换为Object吗?

WeakReference需要使用对象. System.Runtime.Caching.MemoryCache被锁定为类型对象.

自定义词典/集合会导致垃圾收集器出现问题,或者您必须运行自己的垃圾收集器(单独的线程)?

是否有可能拥有两全其美?

我知道我已经接受了答案,但现在可以使用WeakReference!看起来他们偷偷进入.Net 4.

http://msdn.microsoft.com/en-us/library/gg712911(v=VS.96).aspx

一个旧的功能请求.

http://connect.microsoft.com/VisualStudio/feedback/details/98270/make-a-generic-form-of-weakreference-weakreference-t-where-t-class

解决方法

没有什么可以阻止你在MemoryCache周围编写一个通用的包装器 – 可能有一个约束要求引用类型:
public class Cache<T> where T : class
{
    private readonly MemoryCache cache = new MemoryCache();

    public T this[string key]
    {
        get { return (T) cache[key]; }
        set { cache[key] = value; }
    }

    // etc
}

显然,值得委托你真正感兴趣的MemoryCache部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读