我最近有几次在相对较小的时间范围内多次访问特定的类。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