CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Ayuda Plx

(1/1)

carlos_stgo_18:
Holap, me encuentro en una situacion media complicada necesito hacer un ""Dynamic Linking Library"" osea agarrar una dll en tiempo de ejecucion o "run-time", no e podido lograr que me resulte en vb.net se como hacerlo en c y+ pero necesito hacerlo en vb y tengo un problema no me funciona noce si estare mal pero aqui les dejo el codigo para que lo vean aver en q' me equivoque detallare un poco aver si entienden para los que no cachan o no se enrreden bueno es mas que nada para que entiendan mejor mi problema:

Dim A As Assembly = Assembly.LoadFrom("ladll.dll") ' aqui se pone el nombre de la dll que queremos cargar
Dim items As String() = A.CreateInstance("elemsamblado.laclase.funcion1")'aqui va la funcion que queremos llamar

bueno ai se supone que deberia de aver cargado la dll y aver devuelto los datos que pedi pero ni caso S: no me funciona

PD; de ante mano muchas gracias

JuanK:
lo primero es que hasta donde recuerdo esto:


--- Código: Text ---Dim items As String() = A.CreateInstance("elemsamblado.laclase.funcion1") esta mal.

porque debe s3er sino estoy mal:


--- Código: Text ---Dim items As String() = A.CreateInstance("NamesPace.Clase.funcion1") 
En la ayuda especificamente dice que va el nombre del namespace y el de la clase, pero no dice nada del nombre del ensamblado.

Lo correcto... supongo es que de primeras debes instanciar la clase que has cargado:

C#

--- Código: Text ---//Se carga el ensambladoAssembly A = Assembly.LoadFrom("ladll.dll"); //Se crea una instancia de una de las clases que hay en el ensambladoobject instancia = A.CreateInstance("NamesPace.Laclase"); //Obtenemos la infromacion del metodoMethodInfo mi = instancia.GetMethod("laFuncion"); //Lo invocamos sin para,etros (null)mi.Invoke(instancia, null); 

carlos_stgo_18:
eaea :)

Gracias me sirvio N tu ayuda man  :rolleyes:

aa i en cuanto a lo de el ensamblado yo me abia equivocado si tenia claro que era el namespace pero en cuanto al nombre es casi lo misco casi siempre  :D

Bueno eso gracias

aora le aplicare  :comp:  xD

carlos_stgo_18:
Yiap estube trabajando en el codigo y me di cuenta que traduciendo exactamente este codigo me da excepcion :


--- Código: Text --- //Se carga el ensambladoAssembly A = Assembly.LoadFrom("ladll.dll"); //Se crea una instancia de una de las clases que hay en el ensambladoobject instancia = A.CreateInstance("NamesPace.Laclase"); //Obtenemos la infromacion del metodoMethodInfo mi = instancia.GetMethod("laFuncion"); //Lo invocamos sin para,etros (null)mi.Invoke(instancia, null);  
TRADUCIDO a VB.NET seria algo asi


--- Código: Text --- //Se carga el ensambladoDim A as Assembly = Assembly.LoadFrom("ladll.dll"); //Se crea una instancia de una de las clases que hay en el ensambladoDim Instancia as Object = A.CreateInstance("NamesPace.Laclase"); //Obtenemos la infromacion del metodoDim Mi As MethodInfo = Instancia.GetMethod("LaFuncion") //Lo invocamos sin para,etros (null)mi.Invoke(instancia, Nothing);  
bueno la excepcion se da en esta linea


--- Código: Text --- Dim Mi As MethodInfo = Instancia.GetMethod("LaFuncion")  
Ya que GetMethod no es miembro de Instancia asi que cambie un pequeño detalle y quedo asi en realidad no es nada pero es para aclarar para la gente que desea aprender


--- Código: Text --- Dim Mi As MethodInfo = Instancia.GetType.GetMethod("LaFuncion")  
Bueno eso seria  :rolleyes:  Enyoi It? xD

JuanK:
;)

Navegación

[0] Índice de Mensajes

Ir a la versión completa