2012-07-19 44 views
0

我正在爲我的應用程序開發一個簡單的緩存類。C#與代表緩​​存

using System; 
namespace Program { 
    public class Cache { 
    public delegate int CacheMethodInt(); 
    public static int Get(CacheMethodInt method) { 
     //todo: generate cachekey here 
     return method.Invoke(); 
    } 
    } 

    public class Calculator { 
    public int Add(int x, int y) { 
     return x + y; 
    } 
    } 

    class Program { 
    static void Main(string[] args) { 
     Calculator c = new Calculator(); 
     Console.WriteLine(Cache.Get(() => c.Add(1, 2))); 
    } 
    } 
} 

Cache:Get我需要檢查返回值是否已經被緩存,如果沒有調用該方法,從而返回。問題是我無法弄清楚如何生成一個好的緩存鍵。在這種情況下,我想是這樣的:

是否有可能獲得Cache:Get這個信息?我正在使用.NET 2.0。

+1

這是沒有意義的緩存數據,它是此便宜重新計算。使用[家庭作業]標籤作家庭作業問題。 – 2012-07-19 17:06:20

回答

1

它可以使用反射。

作爲替代方案,我在項目中使用了Postsharp來達到同樣的目的。由於受益更普遍和常見的做法

並且不要忘記緩存失效或到期。

相關問題說明如何獲取的MethodInfo和方法名稱:

Using MethodInfo.GetCurrentMethod() in anonymous methods

當你有MethodInfo的比你可以得到你所需要的