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

sgt*_*gtz 7 c# caching

我们能否避免铸造TObject放置时,它在缓存中?

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

Jon*_*eet 4

没有什么可以阻止您编写通用包装器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
}
Run Code Online (Sandbox Code Playgroud)

MemoryCache显然,只值得委派您真正感兴趣的部分。