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.