Carrito de compras (Singlenton) Ayuda!

#1
Buenos días, el problema es el siguiente:

Modifique un carrito de compras que me encontré en la red, todo bien, el gran problema es que al introducir un articulo en el carrito en la maquina X este me aparece agregado también en la maquina Y y Z. Creo que el problema abajo, pero no logro captarlo.

Alguien tiene ideas?


#Region "Singleton Implementation"

' Readonly variables can only be set in initialization or in a constructor
Public Shared ReadOnly Instance As ShoppingCart
' The static constructor is called as soon as the class is loaded into memory


Shared Sub New()
' If the cart is not in the session, create one and put it there
' Otherwise, get it from the session
If HttpContext.Current.Session("ASPNETShoppingCart") Is Nothing Then
Instance = New ShoppingCart()
Instance.Items = New List(Of CartItem)
HttpContext.Current.Session("ASPNETShoppingCart") = Instance
Else
Instance = CType(HttpContext.Current.Session("ASPNETShoppingCart"), ShoppingCart)
End If

End Sub

' A protected constructor ensures that an object can't be created from outside
Protected Sub New()

End Sub


#End Region
 

amic_182

Bovino adicto
#2
No entiendo exactamente cual es tu problema.
Pero si no entiendes lo que es un singleton, es un patron de diseño, comunmente utilizado en carritos de compras para mantener una record global de los items agregados al carrito de compras.

La particularidad de singleton, es que solamente permite instanciar un objeto de la clase, y si tratas de instanciarlo nuevamente, te manda un error.

Trata de utilizar los métodos sin instanciar la clase, y ve si asi se soluciona tu problema.
 
#3
Tratare de ser mas explicito:
Desde tu PC entras a la aplicacion y agregas el libro "Juanito Perez" a tu carrito de compras, en ese mismo momento yo entro desde mi PC, cuando yo vaya al carrito me va a aparecer el libro "Juanito Perez", si yo agrego otro libro o elimino ese, en tu carrito se vera afectado por las modificaciones que yo realice en el mio.

Gracias por contestar.

P.d No entendi muy bien lo de utilizar los métodos sin instanciar la clase
 
Arriba