MemoryCache for Object

时间:2012-10-10 14:41:12

标签: c# caching

我有各种函数类可以执行长计算。目前,对函数结果的每次访问都意味着重新计算函数。这就是我想在我的解决方案中加入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;
    }
};

2 个答案:

答案 0 :(得分:0)

您可以使用Factory类来创建一个用于访问和创建MyFunction对象的类 然后,工厂可以管理和同步包含先前计算的内部字典 MyFunction类需要实现IEquals并提供哈希函数。在myClass中,你需要添加private nullable int result。

答案 1 :(得分:0)

感谢所有答案。

我意识到,如果我想使用ChangeMonitor类,我必须将其扩展为监视内存段。在我的情况下,更好的解决方案是提醒缓存功能结果已更改。我通过向MyFunction类添加方法'Reset'来完成此操作。每次参数更改时,我只需调用Reset函数,这将使缓存无效。