c# Variables Globales (AYUDA)

16/01/2008 - 06:59 por csharp1 | Informe spam
Que tal amigos,
Tengo una aplicacion c# desarrollada en visual studio 2005, la cual tiene
una clase Global.cs (dentro de app_code)que tiene muchas variables estaticas
para su uso general dentro de la aplicacion.

El problema es que se ignoraba que al hacer esto, estas variables eran
compartidas entre las diferentes sessiones que se iniciaran en el sistema,
volviendose loko cuando un nuevo usuario se conectaba y las modificaba.

La clase Global.cs tiene el sigte aspecto:
public class Global{
public static string cadena = "";
}

Lo que se busca o pretende es, contar con variables globales por usuario,
que no se compartan entre ellos.
Estudiamos la opcion del manejo de session, pero el cambio seria brutal, Que
otra opcion se puede implementar??

Gracias
=(
 

Leer las respuestas

#1 Alberto Poblacion
16/01/2008 - 08:48 | Informe spam
"csharp1" wrote in message
news:
Tengo una aplicacion c# desarrollada en visual studio 2005, la cual tiene
una clase Global.cs (dentro de app_code)que tiene muchas variables
estaticas para su uso general dentro de la aplicacion.

El problema es que se ignoraba que al hacer esto, estas variables eran
compartidas entre las diferentes sessiones que se iniciaran en el sistema,
volviendose loko cuando un nuevo usuario se conectaba y las modificaba.

La clase Global.cs tiene el sigte aspecto:
public class Global{
public static string cadena = "";
}

Lo que se busca o pretende es, contar con variables globales por usuario,
que no se compartan entre ellos.
Estudiamos la opcion del manejo de session, pero el cambio seria brutal,
Que otra opcion se puede implementar??



Se me ocurre esta posible solución:

- Quitar los "static" de las variables de la clase Global.
- Renombrar la clase Global a otra cosa (por ejemplo CGlobal).
- En el Session_Start del Global.asax, poner Session["Global"]=new
CGlobal();
- Compilar. El compilador dará un error en todos los sitios donde se
llame a Global.AlgunaVariable, dado que ya no existe Global. Ir haciendo
click en cada error y cambiar Global por ((CGlobal)Session["Global"]). Para
simplificar, se puede escribir un método o propiedad que devuelva este
valor.

Preguntas similares