Ayuda a un Novato

09/06/2004 - 09:46 por luis | Informe spam
Supongo que la pregunta or parecerá excesivamente simple, pero muchas
gracias de antemano.

Tengo una clase "Persona"
Quiero instanciarla 2 veces, p1 y p2.
La duda es la siguiente,

En una aplicación asp.net, quiero poder trabajar con los objetos p1 y p2
desde distintos WebForms y distintas clases, dentro de la misma sesion. Como
lo debo hacer?, y en caso de no ser en la misma sesión, esto es "objetos de
aplicacion", como los instancio y/o declaro??
Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Cesar Garcia Hernandez
09/06/2004 - 16:01 | Informe spam
hola luis, lo que quieres hacer tiene que hacerse como si fuera una variable
de sesion.

algo asi

Persona p1 = new Persona();
Persona p2 = new Persona();

Session["personaa"] = p1;
Session["personab"] = p2;


y luego en tus otras clases llamar a la variable Session["personab"].

Claro que tienes que ver si estas instancias seran diferentes por usuario o
son iguales para todos los usuarios. En ese caso, en lugar de session seria
application lo que tendrias que usar.

Saludos


"luis" <luisenrique> escribió en el mensaje
news:
Supongo que la pregunta or parecerá excesivamente simple, pero muchas
gracias de antemano.

Tengo una clase "Persona"
Quiero instanciarla 2 veces, p1 y p2.
La duda es la siguiente,

En una aplicación asp.net, quiero poder trabajar con los objetos p1 y


p2
desde distintos WebForms y distintas clases, dentro de la misma sesion.


Como
lo debo hacer?, y en caso de no ser en la misma sesión, esto es "objetos


de
aplicacion", como los instancio y/o declaro??
Muchas gracias.


Respuesta Responder a este mensaje
#2 luis
09/06/2004 - 16:13 | Informe spam
Muchas gracias Cesar, pero...
En mi Clase , si pongo Session["personaa"]. no puedo acceder a los métodos
de p1.
Debo instanciar de nuevo Persona, y luego igualarlo a Session["personaa"]


Persona p1 = new Persona();
p1.edad(); // Esto si puedo
Session["personaa"] = p1;

Session["personaa"].p1 // ESTO NO LO PUEDO HACER, CÓMO LO HARÍA?


Repito mi agradecimiento.
Un saludo


"Cesar Garcia Hernandez" escribió en el mensaje
news:
hola luis, lo que quieres hacer tiene que hacerse como si fuera una


variable
de sesion.

algo asi

Persona p1 = new Persona();
Persona p2 = new Persona();

Session["personaa"] = p1;
Session["personab"] = p2;


y luego en tus otras clases llamar a la variable Session["personab"].

Claro que tienes que ver si estas instancias seran diferentes por usuario


o
son iguales para todos los usuarios. En ese caso, en lugar de session


seria
application lo que tendrias que usar.

Saludos


"luis" <luisenrique> escribió en el mensaje
news:
> Supongo que la pregunta or parecerá excesivamente simple, pero muchas
> gracias de antemano.
>
> Tengo una clase "Persona"
> Quiero instanciarla 2 veces, p1 y p2.
> La duda es la siguiente,
>
> En una aplicación asp.net, quiero poder trabajar con los objetos p1


y
p2
> desde distintos WebForms y distintas clases, dentro de la misma sesion.
Como
> lo debo hacer?, y en caso de no ser en la misma sesión, esto es "objetos
de
> aplicacion", como los instancio y/o declaro??
> Muchas gracias.
>
>


Respuesta Responder a este mensaje
#3 Cesar Garcia Hernandez
09/06/2004 - 18:58 | Informe spam
lo que pasa es que no puedes llamar directamente a los metodos de persona
por medio de session, por que lo que hay en session es un object no una
persona.

Tendrias que hacer algo como

Persona p = (Persona) Session["personaa"];

y luego..

p.edad();

...

Puedes usar ese metodo de conversion del object que hay en Session o el que
desees con tal de que conviertas explicitamente lo que hay dentro de Session
a una clase Persona.





"luis" <luisenrique> escribió en el mensaje
news:Oj7#
Muchas gracias Cesar, pero...
En mi Clase , si pongo Session["personaa"]. no puedo acceder a los métodos
de p1.
Debo instanciar de nuevo Persona, y luego igualarlo a Session["personaa"]


Persona p1 = new Persona();
p1.edad(); // Esto si puedo
Session["personaa"] = p1;

Session["personaa"].p1 // ESTO NO LO PUEDO HACER, CÓMO LO HARÍA?


Repito mi agradecimiento.
Un saludo


"Cesar Garcia Hernandez" escribió en el mensaje
news:
> hola luis, lo que quieres hacer tiene que hacerse como si fuera una
variable
> de sesion.
>
> algo asi
>
> Persona p1 = new Persona();
> Persona p2 = new Persona();
>
> Session["personaa"] = p1;
> Session["personab"] = p2;
>
>
> y luego en tus otras clases llamar a la variable Session["personab"].
>
> Claro que tienes que ver si estas instancias seran diferentes por


usuario
o
> son iguales para todos los usuarios. En ese caso, en lugar de session
seria
> application lo que tendrias que usar.
>
> Saludos
>
>
> "luis" <luisenrique> escribió en el mensaje
> news:
> > Supongo que la pregunta or parecerá excesivamente simple, pero muchas
> > gracias de antemano.
> >
> > Tengo una clase "Persona"
> > Quiero instanciarla 2 veces, p1 y p2.
> > La duda es la siguiente,
> >
> > En una aplicación asp.net, quiero poder trabajar con los objetos


p1
y
> p2
> > desde distintos WebForms y distintas clases, dentro de la misma


sesion.
> Como
> > lo debo hacer?, y en caso de no ser en la misma sesión, esto es


"objetos
> de
> > aplicacion", como los instancio y/o declaro??
> > Muchas gracias.
> >
> >
>
>


Respuesta Responder a este mensaje
#4 luis
09/06/2004 - 19:17 | Informe spam
Mas gracias por tu respuesta.
Te comento
Lo que me comentas, evidentemente, funciona. pero depuro la aplicacion y en
la ventana de comandos
(en tiempo de ejecucion) pongo Session["personaa"].dni (dni es una variable
de la clase persona) y si me indica su valor, pero si lo pongo en tiempo de
edición, no me deja compilar, dice que dni no es un atributo de
Session["personaa"]. Tiene alguan explicación?

Y otra pregunta ( a riesgo de ser pesado), lo que me indicas tú no es una
pérdida de memoria?, ya que así tendría dos objetos en la sesión
Session["personaa"] y p, siendo lo mismo.

Gracias

"Cesar Garcia Hernandez" escribió en el mensaje
news:
lo que pasa es que no puedes llamar directamente a los metodos de persona
por medio de session, por que lo que hay en session es un object no una
persona.

Tendrias que hacer algo como

Persona p = (Persona) Session["personaa"];

y luego..

p.edad();

...

Puedes usar ese metodo de conversion del object que hay en Session o el


que
desees con tal de que conviertas explicitamente lo que hay dentro de


Session
a una clase Persona.





"luis" <luisenrique> escribió en el mensaje
news:Oj7#
> Muchas gracias Cesar, pero...
> En mi Clase , si pongo Session["personaa"]. no puedo acceder a los


métodos
> de p1.
> Debo instanciar de nuevo Persona, y luego igualarlo a


Session["personaa"]
>
>
> Persona p1 = new Persona();
> p1.edad(); // Esto si puedo
> Session["personaa"] = p1;
>
> Session["personaa"].p1 // ESTO NO LO PUEDO HACER, CÓMO LO HARÍA?
>
>
> Repito mi agradecimiento.
> Un saludo
>
>
> "Cesar Garcia Hernandez" escribió en el mensaje
> news:
> > hola luis, lo que quieres hacer tiene que hacerse como si fuera una
> variable
> > de sesion.
> >
> > algo asi
> >
> > Persona p1 = new Persona();
> > Persona p2 = new Persona();
> >
> > Session["personaa"] = p1;
> > Session["personab"] = p2;
> >
> >
> > y luego en tus otras clases llamar a la variable Session["personab"].
> >
> > Claro que tienes que ver si estas instancias seran diferentes por
usuario
> o
> > son iguales para todos los usuarios. En ese caso, en lugar de session
> seria
> > application lo que tendrias que usar.
> >
> > Saludos
> >
> >
> > "luis" <luisenrique> escribió en el mensaje
> > news:
> > > Supongo que la pregunta or parecerá excesivamente simple, pero


muchas
> > > gracias de antemano.
> > >
> > > Tengo una clase "Persona"
> > > Quiero instanciarla 2 veces, p1 y p2.
> > > La duda es la siguiente,
> > >
> > > En una aplicación asp.net, quiero poder trabajar con los objetos
p1
> y
> > p2
> > > desde distintos WebForms y distintas clases, dentro de la misma
sesion.
> > Como
> > > lo debo hacer?, y en caso de no ser en la misma sesión, esto es
"objetos
> > de
> > > aplicacion", como los instancio y/o declaro??
> > > Muchas gracias.
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Cesar Garcia Hernandez
09/06/2004 - 19:53 | Informe spam
A la primera pregunta que me haces... te soy sincero... no tengo la menor
idea jejejeje. Supongo que en la ventana de comandos hara lo que es el late
binding, pero es una especulacion, realmente no se por que pasa eso.

A lo segundo, pues, en cierta forma tienes razon. Quizas el tener en la
session algo y luego tener que crear asignarle a un objeto la instancia de
ese algo que tenias en session, puede ser que implique un doble uso de
memoria. En este caso quizas puedas hacer lo siguiente

(espero que funcione ya que no tengo que Visual Studio instalado aqui :P)

string DNI;
DNI = ((Persona) Session["personaa"]).dni;

quizas asi funcione

"luis" <luisenrique> escribió en el mensaje
news:
Mas gracias por tu respuesta.
Te comento
Lo que me comentas, evidentemente, funciona. pero depuro la aplicacion y


en
la ventana de comandos
(en tiempo de ejecucion) pongo Session["personaa"].dni (dni es una


variable
de la clase persona) y si me indica su valor, pero si lo pongo en tiempo


de
edición, no me deja compilar, dice que dni no es un atributo de
Session["personaa"]. Tiene alguan explicación?

Y otra pregunta ( a riesgo de ser pesado), lo que me indicas tú no es una
pérdida de memoria?, ya que así tendría dos objetos en la sesión
Session["personaa"] y p, siendo lo mismo.

Gracias

"Cesar Garcia Hernandez" escribió en el mensaje
news:
> lo que pasa es que no puedes llamar directamente a los metodos de


persona
> por medio de session, por que lo que hay en session es un object no una
> persona.
>
> Tendrias que hacer algo como
>
> Persona p = (Persona) Session["personaa"];
>
> y luego..
>
> p.edad();
>
> ...
>
> Puedes usar ese metodo de conversion del object que hay en Session o el
que
> desees con tal de que conviertas explicitamente lo que hay dentro de
Session
> a una clase Persona.
>
>
>
>
>
> "luis" <luisenrique> escribió en el mensaje
> news:Oj7#
> > Muchas gracias Cesar, pero...
> > En mi Clase , si pongo Session["personaa"]. no puedo acceder a los
métodos
> > de p1.
> > Debo instanciar de nuevo Persona, y luego igualarlo a
Session["personaa"]
> >
> >
> > Persona p1 = new Persona();
> > p1.edad(); // Esto si puedo
> > Session["personaa"] = p1;
> >
> > Session["personaa"].p1 // ESTO NO LO PUEDO HACER, CÓMO LO HARÍA?
> >
> >
> > Repito mi agradecimiento.
> > Un saludo
> >
> >
> > "Cesar Garcia Hernandez" escribió en el mensaje
> > news:
> > > hola luis, lo que quieres hacer tiene que hacerse como si fuera una
> > variable
> > > de sesion.
> > >
> > > algo asi
> > >
> > > Persona p1 = new Persona();
> > > Persona p2 = new Persona();
> > >
> > > Session["personaa"] = p1;
> > > Session["personab"] = p2;
> > >
> > >
> > > y luego en tus otras clases llamar a la variable


Session["personab"].
> > >
> > > Claro que tienes que ver si estas instancias seran diferentes por
> usuario
> > o
> > > son iguales para todos los usuarios. En ese caso, en lugar de


session
> > seria
> > > application lo que tendrias que usar.
> > >
> > > Saludos
> > >
> > >
> > > "luis" <luisenrique> escribió en el mensaje
> > > news:
> > > > Supongo que la pregunta or parecerá excesivamente simple, pero
muchas
> > > > gracias de antemano.
> > > >
> > > > Tengo una clase "Persona"
> > > > Quiero instanciarla 2 veces, p1 y p2.
> > > > La duda es la siguiente,
> > > >
> > > > En una aplicación asp.net, quiero poder trabajar con los


objetos
> p1
> > y
> > > p2
> > > > desde distintos WebForms y distintas clases, dentro de la misma
> sesion.
> > > Como
> > > > lo debo hacer?, y en caso de no ser en la misma sesión, esto es
> "objetos
> > > de
> > > > aplicacion", como los instancio y/o declaro??
> > > > Muchas gracias.
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida