如何創建一個類庫,我可以像IIS Session
對象那樣獲取並設置對象,其中我使用var x = objectname("key")
來獲取值或objectname("key") = x
來設置值?如何創建一個C#會話對象包裝?
回答
通常我只是有圍繞我的會話數據,並使其類型安全就像一個靜態類:
public static class MySessionHelper
{
public static string CustomItem1
{
get { return HttpContext.Current.Session["CustomItem1"] as string; }
set { HttpContext.Current.Session["CustomItem1"] = value; }
}
public static int CustomItem2
{
get { return (int)(HttpContext.Current.Session["CustomItem2"]); }
set { HttpContext.Current.Session["CustomItem2"] = value; }
}
// etc...
}
然後,當我需要獲取或設置你只想做一個項目如下:
// Set
MySessionHelper.CustomItem1 = "Hello";
// Get
string test = MySessionHelper.CustomItem1;
這是你在找什麼?
編輯:根據我對你的問題的評論,你不應該直接從你的應用程序中的頁面訪問會話。包裝類將使訪問類型不僅安全,而且還會爲您提供一箇中心點來進行所有更改。通過使用包裝器的應用程序,您可以在任何時候輕鬆地將Session選擇爲您選擇的數據存儲,而無需更改每個使用該會話的頁面。
我喜歡使用包裝類的另一件事是它記錄存儲在會話中的所有數據。下一個程序員可以通過查看包裝類來查看存儲在會話中的所有內容,這樣您就不會多次存儲相同的數據或重新獲取已在會話中緩存的數據。
更像靜態類。它使訪問更容易。 – 2010-02-23 22:26:05
謝謝。這非常有幫助。 – Mike 2010-02-25 01:25:01
靜態類非常好 – 2010-02-25 05:08:45
我想,你可以使用像Dictionary<string, Object>
或類似的通用字典來實現這種效果。當你通過Wrapper中的自定義默認屬性訪問非existend項目時,你將不得不編寫一些包裝代碼來添加一個Object。
你可以使用一些這樣的事
public class Session
{
private static Dictionary<string, object> _instance = new Dictionary<string, object>();
private Session()
{
}
public static Dictionary<string, object> Instance
{
get
{
if(_instance == null)
{
_instance = new Dictionary<string, object>();
}
return _instance;
}
}
}
而且使用這樣的
Session.Instance["key"] = "Hello World";
我對一箇舊的答案發表評論表示歉意,但是由於這本詞典是在一個靜態的對象中,是否有可能與其他的網絡應用用戶共享?比方說,如果這個對象擁有用戶名,那會是一個問題嗎? – Dave 2015-01-27 17:11:31
- 1. 無法創建一個會話對象
- 2. C++創建一個「包裝」
- 3. BOOL包裝?創建一個「BOOL」值的對象。 (Objective-C)
- 4. Powershell創建會話對象
- 5. 如何創建一個對象,C#
- 6. 如何C#創建一個空對象
- 7. 如何在一個對象內創建一個對象c#
- 8. 如何在jsp中創建會話對象和會話變量?
- 9. 如何使用會話ID創建會話對象?
- 10. Javascript對象:如何創建一個包含工作對象的封裝?
- 11. JNI:如何處理包裝的C++對象的創建/刪除
- 12. 如何創建一個包含其他對象的對象
- 13. 如何爲C++函數創建一個c#包裝器?
- 14. 如何創建一個包裝
- 15. 創建一個會話
- 16. 創建一個新對象覆蓋現有會話(modbus)
- 17. 在會話中保存一個已經創建的對象
- 18. 只爲python中的所有對象創建一個會話
- 19. 在C/C++中創建已包裝庫的Python對象?
- 20. 在C++中爲C風格對象創建透明包裝類
- 21. 試圖創建一個對象來充當UIAlertController包裝器
- 22. 創建一個包裝類
- 23. 從Python的使用C:如何創建一個ctypes包裝
- 24. 如何檢查會話對象是否包含任何對象?
- 25. 如何在一個對象內創建一個javascript對象?
- 26. 創建一個對話樹
- 27. 在C++中創建一個iostream對象
- 28. C#創建一個hierchical對象
- 29. WinRT的c + +創建一個對象
- 30. `new`如何創建一個對象?
你希望自己的對象交談IIS或者你只是作出類似的比較? – 2010-02-23 21:51:48
你的問題具體是什麼?如何爲你的對象添加'[xxx]'支持?或者如何使物體到處都可用?要麼 ... ? – 2010-02-23 21:55:54
Acrtally,我想寫一個替代IIS會話,所以我可以保存Web場的會話狀態。我想以一種不會改變當前設置或使用會話的所有地方的方式編寫它。 – Mike 2010-02-24 14:42:23