我有各种函数类可以执行长计算。目前,对函数结果的每次访问都意味着重新计算函数。这就是我想在我的解决方案中加入MemoryCache的原因。但问题是我需要一个ChangeMonitor类来监视函数类的变化。我见过监视文件的例子。我的问题是:我是否需要编写自定义ChangeMonitor或者我错过了一个简单的解决方案?
一个明确的例子:
class MyFunction
{
//I want to monitor changes to these parameters
private int param1;
private int param2;
//This result should be cached
public int GetResult()
{
return param1 * param2;
}
};
答案 0 :(得分:0)
您可以使用Factory类来创建一个用于访问和创建MyFunction对象的类 然后,工厂可以管理和同步包含先前计算的内部字典 MyFunction类需要实现IEquals并提供哈希函数。在myClass中,你需要添加private nullable int result。
答案 1 :(得分:0)
感谢所有答案。
我意识到,如果我想使用ChangeMonitor类,我必须将其扩展为监视内存段。在我的情况下,更好的解决方案是提醒缓存功能结果已更改。我通过向MyFunction类添加方法'Reset'来完成此操作。每次参数更改时,我只需调用Reset函数,这将使缓存无效。