最近、比較的小さな時間枠で複数回特定のクラスにアクセスする機会がいくつかありました。VB.Net System.ReflectionとSystem.Typeを使用してクラスを初期化してセッションベースのシングルトン拡張メソッドを作成する
私はセッションにクラスの値を格納していて、新しいインスタンスを作成してセッションに保存できない場合は、ページの読み込みにアクセスしようとしています。
別のページの異なるクラスの同じコードを常に複製するのではなく、私のためにこれを行う拡張メソッドを作成しようとしています。
<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
私は私が私の新しい作るときに何をすべきかにこだわっている:
は、私がこれまでのところ、これは私が私の拡張メソッドのために持っているものである。この
Dim objName as MyClass
objName.SessionSingleton()
ようにそれを使用したいです私のクラスのインスタンス(新しい()サブを持つ必要があります)
私はここからどこに行くのかわかりません...もしこれが最善の方法であっても。
あなたのクラスにオブジェクトファクトリが必要だと思います。 – RBarryYoung
これは正しい軌道上にあるかもしれないと私は思います。それは私には新しい概念ですので、私はいくつかの研究をしています。クラス/オブジェクトファクトリを正しく理解している場合は、クラスが何であるかを事前に知る必要があり、名前空間/タイプに基づいてクラスの新しいインスタンスを作成する方法はありませんか? – Birk