如何在.Net中缓存方法结果

时间:2010-05-05 00:17:29

标签: .net caching methods

使用webmethods,使用“CacheDuration”属性缓存结果非常简单。是否有一种类似的“简单”方法来根据参数缓存非webmethod输出(或静态方法)?

我将不胜感激任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:0)

实现缓存的最简单方法是在类中使用Dictionary或类似的数据结构,将结果保存在内存中,以便连续调用。

public class CachedDatastore
{
    private Dictionary<string, object> cache = new Dictionary<string, object>();

    public void FindById(string id)
    {
        if (!cache.ContainsKey(id))
        {
            var data = GetDataFromDatabase(id);
            cache[id] = data;
        }

        return cache[id];
    }
}

如果您想尝试自己实现某些功能,这只是一个基本示例。它不支持缓存“逐出”或随时重新加载数据。如果您需要更多高级功能,我建议您在.NET框架中查找缓存类或其他第三方库。

答案 1 :(得分:0)

此问题类似于:Is there anyway to cache function/method in C#

你想要的正确用语是memoization。维基百科提供了有关此主题的更多细节。不幸的是,没有提到支持它的C#库。有各种方法可以自己实现它。但由于我没有C#的经验,我无法提供更多细节。可以使用的一些技术:AOP,Annotations,Proxies。