我最近有幾次在相對較小的時間範圍內多次訪問特定的類。VB.Net使用System.Reflection和System.Type初始化一個類來創建一個基於會話的單例擴展方法
因此,我一直在Session中存儲類的值,並試圖在頁面加載時訪問它,如果它不可用創建一個新實例並將其存儲在會話中。
因此,我試圖創建一個擴展方法來爲我做這個,而不是不斷地複製相同的代碼在不同的頁面上的不同的類。
我想使用這樣的
Dim objName as MyClass
objName.SessionSingleton()
到目前爲止,這是我爲我的擴展方法:
<Extension()> _
Public Sub SessionSingleton(ByRef ClassObject As Object)
Dim objType As Type = ClassObject.GetType
Dim sessionName As String = objType.FullName
If TypeOf HttpContext.Current.Session(sessionName) Is objType And HttpContext.Current.Session(sessionName) <> "" Then
ClassObject = HttpContext.Current.Session(sessionName)
Else
Dim singleton As Object = New objType???????
HttpContext.Current.Session(sessionName) = singleton
ClassObject = singleton
End If
End Sub
我卡上時,我讓我的新做什麼我的班級的實例(它必須有一個新的()子)
我不知道該從哪裏去......或者即使這是最好的辦法。
我認爲你需要你的類的對象工廠。 – RBarryYoung 2009-06-12 01:04:49
我認爲這可能是正確的軌道...這是一個新概念,所以我正在做一些研究。如果我正確理解類/對象工廠,我仍然需要提前知道類是什麼,並且沒有辦法根據其名稱空間/類型創建類的新實例? – Birk 2009-06-12 13:52:54