使用webmethods,使用“CacheDuration”属性缓存结果非常简单。是否有一种类似的“简单”方法来根据参数缓存非webmethod输出(或静态方法)?
我将不胜感激任何帮助。提前谢谢!
答案 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。