Foros del Web » Programación para mayores de 30 ;) » .NET »

¿Existe la instanciación variable o condicionada?

Estas en el tema de ¿Existe la instanciación variable o condicionada? en el foro de .NET en Foros del Web. Hola: La verdad es que no sabía cómo llamarlo. Quería saber si es posible lo siguiente. Cuando se declara una variable y se instancia se ...
  #1 (permalink)  
Antiguo 30/07/2009, 10:54
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
¿Existe la instanciación variable o condicionada?

Hola:

La verdad es que no sabía cómo llamarlo. Quería saber si es posible lo siguiente.

Cuando se declara una variable y se instancia se usa el siguiente código (C#):

unaClase myClase = new unaClase();

Me gustaría saber si se puede hacer mediante uso de variables o de alguna otra forma el sustituir el "unaClase" por el tipo que dependerá de las opciones seleccionadas en un formulario. Por consiguiente necesito también cambiar el constructor.

Es decir, me gustaría saber si es posible hacer lo siguiente:

miVariableDeClase myClase = new miVariableConstructor();

Esto lo digo porque por polimorfismo, en el momento de la instanciación, en código tengo que poner el tipo, es decir:

Tengo la ClaseA como padre.
Tengo la ClaseB como heredera.

En polimorfismo tendría que poner:

ClaseA miClase = new ClaseB();

Es decir, me obliga a utilizar de forma explícita el constructor del tipo concreto.

Para hacerlo dependiendo del tipo que quiera, tendría que usar If o Case, pero si son muchas las posibles combinaciones o posibilidades, el código se extiende mucho, y para añadir nuevas funcionalidades se haría mucho más difícil.

Si se puediese indicar el constructor a utilizar mediante una variable o de otro modo, el código serían dos líneas:

ClaseA miClase = new variableDeConstructor;
miClase.Metodo();

Donde variableDeConstructor dependería de la opción seleccionada en un formulario, de tal modo que por polimorfismo, se ejecutaría el código del método correspondiente a esa selección realizada por el usuario.

Si se hace por polimorfismo normal, por decirlo de algún modo tendría que ser de la siguiente forma:

Case campoFormulario = 1
ClaseA miClase = new ClaseB();
case campoFormulario = 2
ClaseA miClase = new ClaseC();
.
.
.

Case campoFormulario = n
ClaseA miClase = new Clase999();
End Case


La idea es esta, evitar un mantenimiento de un case que podría ser bastante costoso.

Espero haberme explicado bien.




Gracias.
Daimroc.
  #2 (permalink)  
Antiguo 30/07/2009, 11:15
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: ¿Existe la instanciación variable o condicionada?

si tienes N opciones heredadas o siemplemente multiples clases base a instanciar usa Reflection para solucionar la problematica.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 31/07/2009, 00:23
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ¿Existe la instanciación variable o condicionada?

Clase base solo tengo una, de la que heredan N clases.

¿Cómo sería usar reflection? No sé realmente qué es y cómo se debería utilizar.




Gracias.
Daimroc.
  #4 (permalink)  
Antiguo 31/07/2009, 15:35
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: ¿Existe la instanciación variable o condicionada?

Hola.

Acá tenes unos ejemplos prácticos de replexión:

http://switchoffandletsgo.blogspot.c...nstanciar.html

http://www.codersource.net/csharp_tu...eflection.html
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #5 (permalink)  
Antiguo 01/08/2009, 01:10
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ¿Existe la instanciación variable o condicionada?

Hola:

gracias por los ejemplos, sencillos y justamente lo que buscaba.




Gracias.
Daimroc.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:20.