Crear un objeto Type de una clase en VB2005

09/06/2006 - 09:57 por Jordi Julià | Informe spam
Hola a todos,

¿Como puedo crear en VB2005 un objeto Type de una clase, para poder generar
luego una instancia de esa clase, en tiempo de ejecución?

En VB2003 lo hacía de la siguiente manera:

Dim Clase As Object
Dim TipoClase As Type
TipoClase = Type.GetType("MiProyecto.MiClase")
Clase = Activator.CreateInstance(TipoClase)

Después de la conversión a VB2005, cuando ejecuto estas sentencias el Type
"TipoClase" queda a Nothing.

Saludos
Jordi

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
09/06/2006 - 16:42 | Informe spam
Después de la conversión a VB2005, cuando ejecuto estas sentencias el
Type "TipoClase" queda a Nothing.



¿Está bien colocado el nombre de la clase? Porque el codigo es exactamente
el mismo para VB2005.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Jordi Julià
23/06/2006 - 11:14 | Informe spam
Sí, el nombre de la clase y del proyecto son correctos y existen en el
proyecto.

Es más, este aplicativo esta funcionando en VB2003 y es cuando lo convierto
a VB2005 cuando da error.

Jordi



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:
Después de la conversión a VB2005, cuando ejecuto estas sentencias el
Type "TipoClase" queda a Nothing.



¿Está bien colocado el nombre de la clase? Porque el codigo es exactamente
el mismo para VB2005.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
23/06/2006 - 16:50 | Informe spam
¿Es ASP.NET o Windows Forms?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 Jordi Julià
27/06/2006 - 09:21 | Informe spam
Es ASP.NET, la idea que se ha desarrollado es un WebForms donde en tiempo de
ejecución se cargan los controles y se asocia esa página generada a una
clase donde estan programadas las funciones que se ejecutan cuando se
desencadenan los eventos.

El procedimiento completo que instancia la clase a la página es:

'Establecer una nueva instancia a la clase asociada a la página
Private Function Establecer_ClaseAsociada_Pagina()

ClaseAsociada = Nothing
Dim Usuario As String = Session.Item("Usuario")
Dim Ensamblado As Type

Dim NombreProyecto As String = ""
Dim NombreClase As String = ""
Dim Params(6) As Object

'Obtener los datos de configuración a nivel de página
Dim fila As DataRow
Dim Vista As New
DataView(ds_Pagina.Tables("sysEstructuraWeb_Paginas"))
If Vista.Count > 0 Then
fila = Vista(0).Row

'Obtener el nombe de la clase particular asociada a esa página
NombreClase = Trim(fila.Item("Pagina_Clase_Asociada"))
If NombreClase <> "" Then

'Determinar los parámetros del contructor de la clase a
crear instancia
Params(0) = Compañia
Params(1) = Idioma
Params(2) = Usuario.Trim
Params(3) = connLit_SQL
Params(4) = connLit_OLEDB
Params(5) = ds_Pagina
Params(6) = ClaseVirtual

'Crear la instancia de clase de manera dinámica
NombreProyecto =
System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
Ensamblado = Type.GetType(NombreProyecto & Chr(46) &
NombreClase)
ClaseAsociada = Activator.CreateInstance(Ensamblado, Params)

End If
End If

End Function



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:
¿Es ASP.NET o Windows Forms?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
27/06/2006 - 16:44 | Informe spam
Es ASP.NET



Ya me empezaba a parecer que era asi.

El problema es con esto:
NombreProyecto > System.Reflection.Assembly.GetExecutingAssembly.GetName.Name



En ASP.NET 2 no tienes un solo ensamblado para todas las paginas por lo
tanto lo anterior te va a devolver el nombre del ensablado creado para la
pagina. Esto se debe a que el codigo tiene una la falla y es que nombre de
proyecto no tiene por que ser nombre de namespace. Y todo empeora cuando en
ASP.NET 2 no tienes un nombre de proyecto. La solucion mas simple seria que
Pagina_Clase_Asociada tuvieras el nombre completo de la clase. Si las clases
estan en App_Code y no has declarado ningun namespace en los archivos con
solo el nombre de la clase deberia ser suficiente.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida