17

我有一个看起来像这样的类:

using System.Collections.Generic;
using System.Web.Caching;

public static class MyCache
{
    private static string cacheKey = "mykey";

    public static Dictionary<string, bool> GetCacheValue(bool bypassCache)
    {
        var settings = Cache[cacheKey] as Dictionary<string, bool>; // error on this line

        // ...etc...

        return settings
    }
}

我遇到的问题是这不会编译。编译器说Cache不能像我这样使用。这是消息:

'System.Web.Caching.Cache' is a 'type' but is used like a 'variable'

这让我很困惑。我用谷歌搜索了 ASP.NET 缓存 API,并找到了许多以Cache这种方式使用的示例。这是其中一个示例:

// http://www.4guysfromrolla.com/articles/100902-1.aspx
value = Cache("key")

      - or -

value = Cache.Get("key")

当我尝试使用时,Cache.Get()我得到另一个错误,说它不是静态方法。

显然我需要初始化一个Cache. 这是使用此 API 的正确方法吗?一个后续问题是,缓存的信息是否跨实例持续存在?

谢谢你的帮助。

4

1 回答 1

23

System.Web.Caching.Cache是一个类 - 你看到人们使用一个名为的属性Cache是. 如果您在为您提供该属性的类之外使用它,请使用以下命令访问它:System.Web.Caching.CacheCacheSystem.Web.HttpRuntime.Cache

var settings = System.Web.HttpRuntime.Cache[cacheKey] as Dictionary<string, bool>;
于 2013-09-27T15:14:09.817 回答