SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: carlos_stgo_18 en Viernes 1 de Septiembre de 2006, 02:48

Título: Ayuda Plx
Publicado por: carlos_stgo_18 en Viernes 1 de Septiembre de 2006, 02:48
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
Título: Re: Ayuda Plx
Publicado por: JuanK en Viernes 1 de Septiembre de 2006, 04:21
lo primero es que hasta donde recuerdo esto:

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

porque debe s3er sino estoy mal:

Código: Text
  1. Dim items As String() = A.CreateInstance("NamesPace.Clase.funcion1")
  2.  

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
  1. //Se carga el ensamblado
  2. Assembly A = Assembly.LoadFrom("ladll.dll");
  3.  
  4. //Se crea una instancia de una de las clases que hay en el ensamblado
  5. object instancia = A.CreateInstance("NamesPace.Laclase");
  6.  
  7. //Obtenemos la infromacion del metodo
  8. MethodInfo mi = instancia.GetMethod("laFuncion");
  9.  
  10. //Lo invocamos sin para,etros (null)
  11. mi.Invoke(instancia, null);
  12.  
Título: Re: Ayuda Plx
Publicado por: carlos_stgo_18 en Viernes 1 de Septiembre de 2006, 04:29
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
Título: Re: Ayuda Plx
Publicado por: carlos_stgo_18 en Viernes 1 de Septiembre de 2006, 05:32
Yiap estube trabajando en el codigo y me di cuenta que traduciendo exactamente este codigo me da excepcion :

Código: Text
  1.  
  2. //Se carga el ensamblado
  3. Assembly A = Assembly.LoadFrom("ladll.dll");
  4.  
  5. //Se crea una instancia de una de las clases que hay en el ensamblado
  6. object instancia = A.CreateInstance("NamesPace.Laclase");
  7.  
  8. //Obtenemos la infromacion del metodo
  9. MethodInfo mi = instancia.GetMethod("laFuncion");
  10.  
  11. //Lo invocamos sin para,etros (null)
  12. mi.Invoke(instancia, null);
  13.  
  14.  

TRADUCIDO a VB.NET seria algo asi

Código: Text
  1.  
  2. //Se carga el ensamblado
  3. Dim A as Assembly = Assembly.LoadFrom("ladll.dll");
  4.  
  5. //Se crea una instancia de una de las clases que hay en el ensamblado
  6. Dim Instancia as Object = A.CreateInstance("NamesPace.Laclase");
  7.  
  8. //Obtenemos la infromacion del metodo
  9. Dim Mi As MethodInfo = Instancia.GetMethod("LaFuncion")
  10.  
  11. //Lo invocamos sin para,etros (null)
  12. mi.Invoke(instancia, Nothing);
  13.  
  14.  

bueno la excepcion se da en esta linea

Código: Text
  1.  
  2. Dim Mi As MethodInfo = Instancia.GetMethod("LaFuncion")
  3.  
  4.  

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
  1.  
  2. Dim Mi As MethodInfo = Instancia.GetType.GetMethod("LaFuncion")
  3.  
  4.  

Bueno eso seria  :rolleyes:  Enyoi It? xD
Título: Re: Ayuda Plx
Publicado por: JuanK en Viernes 1 de Septiembre de 2006, 12:37
;)