Como instanciar una clase.....

08/07/2004 - 23:12 por Eusebio | Informe spam
Hola todos,

estoy dando vueltas tratando de hacer lo siguiente:

Tengo 2 clases, y cada una de ella tiene exactamente los mismos métodos y
propiedades.

Lo que necesito es poder crear una instancia de una de las dos a partir del
contenido de una variable

dim miClase as object
if strInstanciar = "CrearClaseA" then
miClase = new ClaseA()
else
miClase = new ClaseB()
endif

el problema con el anterior código(no lo he probado) es que miClase queda
con el cuento de "Late Binding", y pues por comodidad a la hora de
programar es mejor con el intellisense.además porque esta clase es usada
practicamente para todo...

Sé que la clave está por el lado de la reflexion, pero es un tema que no he
logrado entender muy bien

ClaseA y ClaseB son dos clases que cada una ejecuta los mismos comandos una
contra un servidor sql server y la otra contra un servidor oracle...de tal
modo que la misma aplicación se pueda conectar a una u otra base de datos
sin modificar la interfaz de usuario

Gracias por adelantado...


Eusebio

Preguntas similare

Leer las respuestas

#6 Tristan
11/07/2004 - 13:19 | Informe spam
Heich, en realidad, yo creo que en vb6, o más bien en COM, ocurría lo mismo.
En cierta ocasión, hice un test de velocidad, y utilizar interfaces, frente
a late binding, suponía un rendimiento unas 10 veces superior. La
dieferencia es mucho menor que en .net, pero grande al fin y al cabo.

Yo creo que es lógico. Cuando se conoce el tipo en tiempo de compilación, se
pueden establecer las direcciones de salto de forma absoluta (indirecto a la
vtable), se que en COM es algo más complicado, pero la idea debe ser la
misma. Por el contrario, no conozco como funciona internamente el late
binding en COM ni en .NET, pero parece lógico pensar que haya que recorrer
la tabla de métodos para obtener la dirección de salto.

En fin, no puedo asegurartelo con COM en general. Solo en las pruebas que he
efectuado. Donde si puedo garantizártelo es en .net.
#7 Tristan
11/07/2004 - 13:29 | Informe spam
Como tu pregunta me ha despertado la curiosidad, he estado viendo algo sobre
el tema. He encontrado esta página en la que explica claramente que "early
binding", también en COM es bastante más eficiente, y explica de que forma
sacarle el máximo partido.

http://kandkconsulting.tripod.com/V...torial.htm

Por cierto, creo que ya se a que te refieres. El caso más rápido según el
artículo, es utilizar "Early Binding", pero instanciar con CreateObject.
Perotal y como la lógica parecía sugerir, "Late Binding" es siempre la
opción más lenta.
#8 Heich
13/07/2004 - 02:55 | Informe spam
Hola Tristan
Muy interesante tu comentario

Recordaba que en uno de los cursos de certificacion
MSD VB6 se habla del tema, haciendo hincapie
en la diferencia entre ambos metodos al accesar a las
TypeLib, comentando que el Late Binding era un poco mas
rapido que Early.

Sin embargo, ese modelo era aplicable al COM de forma local, o
a redes pequeñas donde SNA todavia no representaba el paradigma
del modelo desconectado y las aplicaciones orientadas a WEB.

Encontre esta pequeña informacion en MSDN que confirma con creces tu
afirmacion

http://msdn.microsoft.com/library/d...hapt05.asp


Mil gracias y un afectuoso saludo

Heich
heichito[arroba]hotmail[punto]com
Daria todo lo que se por saber la mitad de lo que ignoro.
-
NOTA: este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia
Guia de Netiquette:
http://www.geocities.com/heich_prog...uette.html
-
"Tristan" escribió en el mensaje
news:%
Mostrar la cita
sobre
Mostrar la cita
Ads by Google
Search Busqueda sugerida