将它放入缓存中时,我们可以避免将T转换为Object吗?
WeakReference需要使用对象. System.Runtime.Caching.MemoryCache被锁定为类型对象.
自定义词典/集合会导致垃圾收集器出现问题,或者您必须运行自己的垃圾收集器(单独的线程)?
是否有可能拥有两全其美?
我知道我已经接受了答案,但现在可以使用WeakReference!看起来他们偷偷进入.Net 4.
http://msdn.microsoft.com/en-us/library/gg712911(v=VS.96).aspx
一个旧的功能请求.
解决方法
没有什么可以阻止你在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部分.