Reflexion??

05/05/2004 - 18:20 por Maxi | Informe spam
Estimados, esta pregunta me tiene un poco intranquilo :(((

a ver:

Yo necesito armar un sistema modular donde los modulos se cargaran via un
menu principal, digamos que por ej hay un modulo ABM clientes y este lo
encapsulo (exe o dll) donde luego a mi tabla de menu le indico ello.

Bien mi gran duda es:

Como me conviene hacer esto:

Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es lo
aconsejable en estos casos?

Ademas supongamos que decidimos un EXE, este Exe ´puede leer las propiedades
de una clase que se instancio antes? digamos que el menu principal instancia
una clase llamada Usuario y ahi esta la info del usuario, es posible que
este modulo EXE (ABM Clientes) puede leer esos datos? como me aconsejan
hacerlo?

Gracias


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004

Preguntas similare

Leer las respuestas

#1 Alvaro Mateos [MS]
09/05/2004 - 01:58 | Informe spam
Lo mejor en esos casos es utilizar una dll y no un exe ya que la dll se crea
en el mismo proceso.

Para la comunicación entre la aplicación principal y los módulos lo
aconsejable es utilizar interfaces conocidos por ambos.

Algunas guías para implementar este patrón.

1. Crea un proyecto Comun con los interfaces necesarios para comunicar
aplicación y módulos, por ejemplo el interfaz IModulo podría contener los
métodos y propiedades comunes de todos los módulos, el interfaz IEntidad de
las entidades (los datos que se pasan de uno a otro) y el interfaz
IAplicacion podría servir para que los módulos se comunicaran con la
aplicación principal. Este proyecto evitará referencias cíclicas entre
proyectos.
2. Crea un proyecto aplicación que referencie al proyecto Comun para
comunicarse con los módulos instanciando por reflection los módulos y
asignándolos a los interfaces apropiados
3. A partir de aquí se pueden crear varios proyectos Modulos que referencien
también al proyecto Comun. Cada proyecto podrá contener uno o varios
módulos.
4. Para saber que módulos implementa una dll (assembly) utiliza el fichero
.config de la aplicación de una manera parecida a como lo hace ASP.NET para
declarar controles web.

Espero que esto te ayude.

Un saludo,

Alvaro Mateos [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho


"Maxi" wrote in message
news:%238Y$
Estimados, esta pregunta me tiene un poco intranquilo :(((

a ver:

Yo necesito armar un sistema modular donde los modulos se cargaran via un
menu principal, digamos que por ej hay un modulo ABM clientes y este lo
encapsulo (exe o dll) donde luego a mi tabla de menu le indico ello.

Bien mi gran duda es:

Como me conviene hacer esto:

Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es lo
aconsejable en estos casos?

Ademas supongamos que decidimos un EXE, este Exe ´puede leer las


propiedades
de una clase que se instancio antes? digamos que el menu principal


instancia
una clase llamada Usuario y ahi esta la info del usuario, es posible que
este modulo EXE (ABM Clientes) puede leer esos datos? como me aconsejan
hacerlo?

Gracias


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004


Respuesta Responder a este mensaje
#2 Maxi
10/05/2004 - 17:37 | Informe spam
Hola, es justamente lo que buscaba!! mil gracias!!! ahora el reflexion es
lento o tengo alguna otra forma de levantar los modulos dll desde un menu en
forma Dinamica.

Gracias


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Alvaro Mateos [MS]" escribió en el mensaje
news:%
Lo mejor en esos casos es utilizar una dll y no un exe ya que la dll se


crea
en el mismo proceso.

Para la comunicación entre la aplicación principal y los módulos lo
aconsejable es utilizar interfaces conocidos por ambos.

Algunas guías para implementar este patrón.

1. Crea un proyecto Comun con los interfaces necesarios para comunicar
aplicación y módulos, por ejemplo el interfaz IModulo podría contener los
métodos y propiedades comunes de todos los módulos, el interfaz IEntidad


de
las entidades (los datos que se pasan de uno a otro) y el interfaz
IAplicacion podría servir para que los módulos se comunicaran con la
aplicación principal. Este proyecto evitará referencias cíclicas entre
proyectos.
2. Crea un proyecto aplicación que referencie al proyecto Comun para
comunicarse con los módulos instanciando por reflection los módulos y
asignándolos a los interfaces apropiados
3. A partir de aquí se pueden crear varios proyectos Modulos que


referencien
también al proyecto Comun. Cada proyecto podrá contener uno o varios
módulos.
4. Para saber que módulos implementa una dll (assembly) utiliza el fichero
.config de la aplicación de una manera parecida a como lo hace ASP.NET


para
declarar controles web.

Espero que esto te ayude.

Un saludo,

Alvaro Mateos [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y


no
otorga ningún derecho


"Maxi" wrote in message
news:%238Y$
> Estimados, esta pregunta me tiene un poco intranquilo :(((
>
> a ver:
>
> Yo necesito armar un sistema modular donde los modulos se cargaran via


un
> menu principal, digamos que por ej hay un modulo ABM clientes y este lo
> encapsulo (exe o dll) donde luego a mi tabla de menu le indico ello.
>
> Bien mi gran duda es:
>
> Como me conviene hacer esto:
>
> Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es lo
> aconsejable en estos casos?
>
> Ademas supongamos que decidimos un EXE, este Exe ´puede leer las
propiedades
> de una clase que se instancio antes? digamos que el menu principal
instancia
> una clase llamada Usuario y ahi esta la info del usuario, es posible que
> este modulo EXE (ABM Clientes) puede leer esos datos? como me aconsejan
> hacerlo?
>
> Gracias
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
Respuesta Responder a este mensaje
#3 Maxi
10/05/2004 - 17:39 | Informe spam
Disculpame no!! pero no te entendi el punto 4? vos decis que no use
Reflexion? y que use algo en al Config?

Me podrias dar un ejemplo de codigo?

Gracias y disculpa las molestias



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Alvaro Mateos [MS]" escribió en el mensaje
news:%
Lo mejor en esos casos es utilizar una dll y no un exe ya que la dll se


crea
en el mismo proceso.

Para la comunicación entre la aplicación principal y los módulos lo
aconsejable es utilizar interfaces conocidos por ambos.

Algunas guías para implementar este patrón.

1. Crea un proyecto Comun con los interfaces necesarios para comunicar
aplicación y módulos, por ejemplo el interfaz IModulo podría contener los
métodos y propiedades comunes de todos los módulos, el interfaz IEntidad


de
las entidades (los datos que se pasan de uno a otro) y el interfaz
IAplicacion podría servir para que los módulos se comunicaran con la
aplicación principal. Este proyecto evitará referencias cíclicas entre
proyectos.
2. Crea un proyecto aplicación que referencie al proyecto Comun para
comunicarse con los módulos instanciando por reflection los módulos y
asignándolos a los interfaces apropiados
3. A partir de aquí se pueden crear varios proyectos Modulos que


referencien
también al proyecto Comun. Cada proyecto podrá contener uno o varios
módulos.
4. Para saber que módulos implementa una dll (assembly) utiliza el fichero
.config de la aplicación de una manera parecida a como lo hace ASP.NET


para
declarar controles web.

Espero que esto te ayude.

Un saludo,

Alvaro Mateos [MS]

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y


no
otorga ningún derecho


"Maxi" wrote in message
news:%238Y$
> Estimados, esta pregunta me tiene un poco intranquilo :(((
>
> a ver:
>
> Yo necesito armar un sistema modular donde los modulos se cargaran via


un
> menu principal, digamos que por ej hay un modulo ABM clientes y este lo
> encapsulo (exe o dll) donde luego a mi tabla de menu le indico ello.
>
> Bien mi gran duda es:
>
> Como me conviene hacer esto:
>
> Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es lo
> aconsejable en estos casos?
>
> Ademas supongamos que decidimos un EXE, este Exe ´puede leer las
propiedades
> de una clase que se instancio antes? digamos que el menu principal
instancia
> una clase llamada Usuario y ahi esta la info del usuario, es posible que
> este modulo EXE (ABM Clientes) puede leer esos datos? como me aconsejan
> hacerlo?
>
> Gracias
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
Respuesta Responder a este mensaje
#4 Alvaro Mateos [MS]
12/05/2004 - 03:50 | Informe spam
Si, hay que utilizar reflection. Lo que quise decir con el fichero .config
es que lo podemos utilizar para declarar la lista de módulos que aparecerán
en el menú y la información necesaria para cargarlos con reflection,
concretamente el nombre del assembly (fichero dll) y nombre de la clase que
hay que instanciar (nombre completo con namespace).



Como ejemplo sencillo supongamos los siguientes proyectos:



Proyecto COMUN - Declaración de los interfaces comunes



using System;



namespace Comun

{

public interface IModulo

{

string Ejecutar( string mensaje );

}

}



Proyecto MODULO1 - Implementa uno o varios módulos



using System;



using Comun;



namespace Modulo1

{

public class MiModulo: IModulo

{

#region IModulo Members

public string Ejecutar( string mensaje )

{

// Procesa el mensaje (podría ser un DataSet)

string str = "Mensaje recibido: " + mensaje + ".";

return str;

}

#endregion

}

}



Proyecto APLICACIÓN - Llama a los módulos por reflection



using System;

using System.Reflection;

using System.Runtime.Remoting;



using Comun;



namespace Aplicacion

{

class MainClass

{

static void Main(string[] args)

{

// Lama al modulo
string resultado = EjecutarModulo( "Modulo1.dll",
"Modulo1.MiModulo", "Mensaje desde la aplicacion" );
// Muestra el resultado
Console.WriteLine( resultado );

}



static string EjecutarModulo( string nombreAssembly, string
nombreClase, string mensaje )

{

// Crea una instancia del módulo desde el assembly
ObjectHandle objh = Activator.CreateInstanceFrom(
nombreAssembly, nombreClase );

// Lo tratamos a partir del interfaz IModulo conocido

IModulo imod = (IModulo) objh.Unwrap();

return imod.Ejecutar( mensaje );

}

}

}



La función EjecutarModulo() es la encargada de instanciar y ejecutar el
Modulo adecuado pasandole el mensaje a procesar por el módulo. Para ello
necesita conocer el nombre del assembly y el nombre completo con namespace
incluido de la clase. Lo normal es que esta información no esté escrita en
el código sino en un fichero de configuración para que se puedan añadir
módulos sin tener que recompilar la aplicación, de ahí la sugerencia de
utilizar el fichero .config para enumerar la lista de módulo Assembly-Clase.



Nota: Los assemblies módulos (p.e Modulo1.dll) deberán estar en el
directorio de la aplicación ya que .NET buscará a partir de dicho
directorio.



Espero que sirva el ejemplo.

Saludos,

Alvaro Mateos [MS]


Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho




"Maxi" wrote in message
news:
Disculpame no!! pero no te entendi el punto 4? vos decis que no use
Reflexion? y que use algo en al Config?

Me podrias dar un ejemplo de codigo?

Gracias y disculpa las molestias



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Alvaro Mateos [MS]" escribió en el


mensaje
news:%
> Lo mejor en esos casos es utilizar una dll y no un exe ya que la dll se
crea
> en el mismo proceso.
>
> Para la comunicación entre la aplicación principal y los módulos lo
> aconsejable es utilizar interfaces conocidos por ambos.
>
> Algunas guías para implementar este patrón.
>
> 1. Crea un proyecto Comun con los interfaces necesarios para comunicar
> aplicación y módulos, por ejemplo el interfaz IModulo podría contener


los
> métodos y propiedades comunes de todos los módulos, el interfaz IEntidad
de
> las entidades (los datos que se pasan de uno a otro) y el interfaz
> IAplicacion podría servir para que los módulos se comunicaran con la
> aplicación principal. Este proyecto evitará referencias cíclicas entre
> proyectos.
> 2. Crea un proyecto aplicación que referencie al proyecto Comun para
> comunicarse con los módulos instanciando por reflection los módulos y
> asignándolos a los interfaces apropiados
> 3. A partir de aquí se pueden crear varios proyectos Modulos que
referencien
> también al proyecto Comun. Cada proyecto podrá contener uno o varios
> módulos.
> 4. Para saber que módulos implementa una dll (assembly) utiliza el


fichero
> .config de la aplicación de una manera parecida a como lo hace ASP.NET
para
> declarar controles web.
>
> Espero que esto te ayude.
>
> Un saludo,
>
> Alvaro Mateos [MS]
>
> Este mensaje se proporciona "como está" sin garantías de ninguna clase,


y
no
> otorga ningún derecho
>
>
> "Maxi" wrote in message
> news:%238Y$
> > Estimados, esta pregunta me tiene un poco intranquilo :(((
> >
> > a ver:
> >
> > Yo necesito armar un sistema modular donde los modulos se cargaran via
un
> > menu principal, digamos que por ej hay un modulo ABM clientes y este


lo
> > encapsulo (exe o dll) donde luego a mi tabla de menu le indico ello.
> >
> > Bien mi gran duda es:
> >
> > Como me conviene hacer esto:
> >
> > Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es


lo
> > aconsejable en estos casos?
> >
> > Ademas supongamos que decidimos un EXE, este Exe ´puede leer las
> propiedades
> > de una clase que se instancio antes? digamos que el menu principal
> instancia
> > una clase llamada Usuario y ahi esta la info del usuario, es posible


que
> > este modulo EXE (ABM Clientes) puede leer esos datos? como me


aconsejan
> > hacerlo?
> >
> > Gracias
> >
> >
> > Salu2
> > Maxi
> > Buenos Aires - Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004


Respuesta Responder a este mensaje
#5 Maxi
12/05/2004 - 04:07 | Informe spam
sos un capooo!!! es lo que necesito!! :-) mil gracias nuevamente por tu
valioso tiempo

Un abrazo enorme


Salu2

Maxi

Desarrollador 3 estrellas .NET
Buenos Aires - Argentina

MSN:

"Alvaro Mateos [MS]" escribió en el mensaje
news:%
Si, hay que utilizar reflection. Lo que quise decir con el fichero .config
es que lo podemos utilizar para declarar la lista de módulos que


aparecerán
en el menú y la información necesaria para cargarlos con reflection,
concretamente el nombre del assembly (fichero dll) y nombre de la clase


que
hay que instanciar (nombre completo con namespace).



Como ejemplo sencillo supongamos los siguientes proyectos:



Proyecto COMUN - Declaración de los interfaces comunes



using System;



namespace Comun

{

public interface IModulo

{

string Ejecutar( string mensaje );

}

}



Proyecto MODULO1 - Implementa uno o varios módulos



using System;



using Comun;



namespace Modulo1

{

public class MiModulo: IModulo

{

#region IModulo Members

public string Ejecutar( string mensaje )

{

// Procesa el mensaje (podría ser un DataSet)

string str = "Mensaje recibido: " + mensaje + ".";

return str;

}

#endregion

}

}



Proyecto APLICACIÓN - Llama a los módulos por reflection



using System;

using System.Reflection;

using System.Runtime.Remoting;



using Comun;



namespace Aplicacion

{

class MainClass

{

static void Main(string[] args)

{

// Lama al modulo
string resultado = EjecutarModulo( "Modulo1.dll",
"Modulo1.MiModulo", "Mensaje desde la aplicacion" );
// Muestra el resultado
Console.WriteLine( resultado );

}



static string EjecutarModulo( string nombreAssembly, string
nombreClase, string mensaje )

{

// Crea una instancia del módulo desde el assembly
ObjectHandle objh = Activator.CreateInstanceFrom(
nombreAssembly, nombreClase );

// Lo tratamos a partir del interfaz IModulo conocido

IModulo imod = (IModulo) objh.Unwrap();

return imod.Ejecutar( mensaje );

}

}

}



La función EjecutarModulo() es la encargada de instanciar y ejecutar el
Modulo adecuado pasandole el mensaje a procesar por el módulo. Para ello
necesita conocer el nombre del assembly y el nombre completo con namespace
incluido de la clase. Lo normal es que esta información no esté escrita en
el código sino en un fichero de configuración para que se puedan añadir
módulos sin tener que recompilar la aplicación, de ahí la sugerencia de
utilizar el fichero .config para enumerar la lista de módulo


Assembly-Clase.



Nota: Los assemblies módulos (p.e Modulo1.dll) deberán estar en el
directorio de la aplicación ya que .NET buscará a partir de dicho
directorio.



Espero que sirva el ejemplo.

Saludos,

Alvaro Mateos [MS]


Este mensaje se proporciona "como está" sin garantías de ninguna clase, y


no
otorga ningún derecho




"Maxi" wrote in message
news:
> Disculpame no!! pero no te entendi el punto 4? vos decis que no use
> Reflexion? y que use algo en al Config?
>
> Me podrias dar un ejemplo de codigo?
>
> Gracias y disculpa las molestias
>
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Alvaro Mateos [MS]" escribió en el
mensaje
> news:%
> > Lo mejor en esos casos es utilizar una dll y no un exe ya que la dll


se
> crea
> > en el mismo proceso.
> >
> > Para la comunicación entre la aplicación principal y los módulos lo
> > aconsejable es utilizar interfaces conocidos por ambos.
> >
> > Algunas guías para implementar este patrón.
> >
> > 1. Crea un proyecto Comun con los interfaces necesarios para comunicar
> > aplicación y módulos, por ejemplo el interfaz IModulo podría contener
los
> > métodos y propiedades comunes de todos los módulos, el interfaz


IEntidad
> de
> > las entidades (los datos que se pasan de uno a otro) y el interfaz
> > IAplicacion podría servir para que los módulos se comunicaran con la
> > aplicación principal. Este proyecto evitará referencias cíclicas entre
> > proyectos.
> > 2. Crea un proyecto aplicación que referencie al proyecto Comun para
> > comunicarse con los módulos instanciando por reflection los módulos y
> > asignándolos a los interfaces apropiados
> > 3. A partir de aquí se pueden crear varios proyectos Modulos que
> referencien
> > también al proyecto Comun. Cada proyecto podrá contener uno o varios
> > módulos.
> > 4. Para saber que módulos implementa una dll (assembly) utiliza el
fichero
> > .config de la aplicación de una manera parecida a como lo hace ASP.NET
> para
> > declarar controles web.
> >
> > Espero que esto te ayude.
> >
> > Un saludo,
> >
> > Alvaro Mateos [MS]
> >
> > Este mensaje se proporciona "como está" sin garantías de ninguna


clase,
y
> no
> > otorga ningún derecho
> >
> >
> > "Maxi" wrote in message
> > news:%238Y$
> > > Estimados, esta pregunta me tiene un poco intranquilo :(((
> > >
> > > a ver:
> > >
> > > Yo necesito armar un sistema modular donde los modulos se cargaran


via
> un
> > > menu principal, digamos que por ej hay un modulo ABM clientes y este
lo
> > > encapsulo (exe o dll) donde luego a mi tabla de menu le indico


ello.
> > >
> > > Bien mi gran duda es:
> > >
> > > Como me conviene hacer esto:
> > >
> > > Por cada modulo UI un EXE o una Dll y llamarla por Reflexion? que es
lo
> > > aconsejable en estos casos?
> > >
> > > Ademas supongamos que decidimos un EXE, este Exe ´puede leer las
> > propiedades
> > > de una clase que se instancio antes? digamos que el menu principal
> > instancia
> > > una clase llamada Usuario y ahi esta la info del usuario, es posible
que
> > > este modulo EXE (ABM Clientes) puede leer esos datos? como me
aconsejan
> > > hacerlo?
> > >
> > > Gracias
> > >
> > >
> > > Salu2
> > > Maxi
> > > Buenos Aires - Argentina
> > > Desarrollador Microsoft 3 Estrellas .NET
> > > Nunca consideres el estudio como una obligación sino como
> > > una oportunidad para penetrar en el bello y maravillosos
> > > mundo del saber.
> > > - Albert Einstein
> > >
> > >
> > >
> > >
> > >
> > >
> > > Outgoing mail is certified Virus Free.
> > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.676 / Virus Database: 438 - Release Date: 03/05/2004
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida