2012-10-03 31 views
1

有一個其他類在其方法中使用它的類。我想在請求期間提供的一個實例的所有方法如何提供所需方法的一個實例的所有方法

更新:請求時說意思:當用戶向服務器請求加載網頁(的BeginRequest),若干事件和方法將被稱爲和提高。他們中的很多人都需要我的班級將一些數據保存到數據庫中。而不是實例我的類每個方法或頁面,使幾個交易到數據庫中,我想所有的方法只使用一個實例緩衝區這些數據,並在要求結束將所有數據插入數據庫一次。並且這些重複與下一個請求

+1

讓它'static' – Alex

+1

你是一個Singelton? http://en.wikipedia.org/wiki/Singleton_pattern或來自P&P:http://msdn.microsoft.com/en-us/library/ms998426.aspx – rene

+0

@rene:我更新了問題,我想要所有的方法需要這個類的一個實例,使用同一個實例。但只是在請求期間。我認爲單身人士可以做同樣的事情,但對於所有請求 –

回答

3

您可以使用每個請求集合並使用它創建每個請求singletone。

http://www.4guysfromrolla.com/articles/060904-1.aspx

+0

@JackSpector:謝謝,我發現這篇博文http://bit.ly/8sjlZ。因爲我想在類庫中編寫這個類,您怎麼看待使用System.Runtime.Remoting.Messaging.CallContext而不是HttpContext? –

+1

從來沒有使用過CallContext,但根據MSDN它更多地與線程存儲相關。如果你要在Web應用程序中使用你的類庫,並且你不需要比每個請求更多地保存數據,最好使用HttpContext.Current。 –

2

使用Singleton模式

P&P

在一些情況下,特定類型數據的需要是提供給應用程序中的所有其他對象。在大多數情況下,這種類型的數據在系統中也是唯一的。例如,用戶界面只能有一個所有應用程序必須訪問的鼠標指針。同樣,企業解決方案可以與管理與特定遺留系統的連接的單網關對象連接。

如何使對象的實例全局可用,並確保只創建該類的一個實例?

Example

public class Singleton 
{ 
    private static Singleton instance; 

    private Singleton() {} 

    public static Singleton Instance 
    { 
     get 
     { 
     if (instance == null) 
     { 
      instance = new Singleton(); 
     } 
     return instance; 
     } 
    } 
} 
+0

是否可以在請求範圍內創建單例? –

+0

當然。使用HttpContext.Current。用於存儲singletone實例的項目集合。 –

相關問題