Tempo fa avevo la necessità di salvare un oggetto VBScript all’interno di una var di sessione, ora VBSCript non è un vero e proprio linguaggio di scripting orientato ad oggetti anche se con la versione 5 qualche passo in avanti in questa direzione è stata fatta.
Tuttavia (visto che gli oggetti VBS non sono realmente memorizzati come oggetti) non è possibile memorizzare un oggetto all’interno di una var Session od Application.
Una soluzione potrebbe essere utilizzare due metodi ad hoc per quantomeno simulare il risultato.
Per prima cosa ci dichiariamo la nostra classe necessaria ad instanziare gli oggetti:
Class MiaClasse Dim Var1 Dim Var2 End Class
Quindi creiamo due metodi attraverso i quali andremo ad incapsulare le proprietà dell’oggetto in una Session (o meglio delle Session) e poi e riassegnarli ad un nuovo oggetto
Sub Serialize_MyClass( instanza, sessionVar ) Session( sessionVar & ".Var1" ) = instanza.Var1 Session( sessionVar & ".Var2" ) = instanza.Var2 End Sub Function Deserialize_MyClass(sessionVar) Dim instanza : Set instanza = new MiaClasse instanza.Var1 = Session( sessionVar & ".var1" ) instanza.Var2 = Session( sessionVar & ".var2" ) Set Deserialize_MyClass = instanza End Function
Vediamo infine un esempio concreto:
Dim mioOggetto : Set mioOggetto = New MiaClasse mioOggetto.Var1="pippo" mioOggetto.Var2="pluto" Serialize_MyClass mioOggetto, "sessione" Dim mioOggetto2 : Set mioOggetto2 = Deserialize_MyClass("sessione")
Conclusioni
Come detto all’inizio non è possibile con VBS salvare un oggetto all’interno di una variabile di sessione, attraverso questa tecnica, utilizzando Serialize_MyClass andremo a salvare tante Sesson quante sono le
proprietà dell’oggetto e poi attraverso il metodo Deserialize_MyClass andremo a salvarle in un nuovo oggetto.