2010-11-12 41 views
8

在ASP.NET中,是否有任何理由不製作一組從Cache對象靜態添加/刪除/獲取的函數? (),刪除() - 我讀過緩存中的添加/刪除操作,它擁有自己的內部鎖定機制,所以他們可以()獲取該項目,沒有理由不成爲靜態的 Add如果沒有我創建我自己的鎖(){}包裝,請保持靜態。製作緩存訪問方法static

回答

10

已經可以在靜態情況下,通過

HttpRuntime.Cache

HttpContext.Current.Cache僅僅轉發了這一號召,方法反正訪問,但調用HttpContext.Current.Cache可能會導致運行錯誤,如果它不是在生命週期的哪個HttpContext.Current可用。

回答你的問題:

是的,你可以使用它來處理這個問題。你將不得不像

public static class StaticCache 
{ 

    public static Add(object obj) 
    {   
     try {    
      HttpRuntime.Cache.Add(obj);    
     } 
     catch(Exception ex) { 
      //log or something    
     }   
    }  
} 

和使用情況將類似於

StaticCache.Add("bob");

+0

你是說,他們可以是靜態的,因爲HttpRuntime.Cache電話是靜態的?我的問題是關於將Cache調用放在方法中,以便我可以進行日誌記錄,錯誤檢查,根據需要更改過期時間等。 – eych 2010-11-12 16:32:28

+1

哇,不知道這存在。我一直使用'HttpContext.Current.Cache'來靜態訪問它。 – Earlz 2012-12-07 05:58:35