在没有System.Web的C#中缓存

ker*_*bou 5 c# caching

我希望能够在不引用System.Web的情况下缓存一些对象.我想要滑动过期而不是更多...是否真的没有去哪里但是使用字典和一些自制的对象过期构建我自己的东西 - 或者在.NET框架中有什么东西我完全错过了吗?

Chr*_*ter 5

您可以尝试Microsoft企业库缓存应用程序块.

使用滑动超时按需缓存的示例实用程序函数:

static T GetCached<T>(string key, TimeSpan timeout, Func<T> getDirect) {
    var cache = CacheFactory.GetCacheManager();
    object valueCached = cache[key];
    if(valueCached != null) {
        return (T) valueCached;
    } else {
        T valueDirect = getDirect();
        cache.Add(key, valueDirect, CacheItemPriority.Normal, null, new SlidingTime(timeout));
        return valueDirect;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以指定多个过期策略,其中包括SlidingTime,FileDependency,ExtendedFormatTime,或者您也可以自己编写.