J'ai récemment eu plusieurs occasions d'accéder à une classe spécifique plusieurs fois sur une période relativement courte. J'ai donc stocké la valeur de la classe dans Session et essayé d'y accéder au chargement de la page, si elle n'est pas disponible en créant une nouvelle instance et en la stockant dans la session.VB.Net Initialisation d'une classe à l'aide de System.Reflection et System.Type pour créer une méthode d'extension singleton basée sur une session
Donc, au lieu de constamment répliquer le même code pour différentes classes sur des pages différentes, j'essaye de créer une méthode d'extension pour le faire pour moi.
Je veux l'utiliser comme ceci
Dim objName as MyClass
objName.SessionSingleton()
Jusqu'à présent, c'est ce que j'ai pour ma méthode d'extension:
<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
Je suis bloqué sur ce qu'il faut faire quand je fais mon nouveau instance de ma classe (il faudrait avoir un nouveau() sous)
Je ne sais pas où aller à partir d'ici ... ou même si c'est la meilleure façon de le faire.
Je pense que vous avez besoin d'usines d'objets pour vos classes. – RBarryYoung
Je pense que cela pourrait être sur la bonne voie ... c'est un nouveau concept pour moi alors je fais des recherches.Si je comprends correctement les Class/Object Factories, je dois savoir à l'avance ce que sont les classes et il n'y a pas moyen de créer une nouvelle instance d'une classe basée sur son namespace/type. – Birk