Istanziare una dll .Net a Runtime

venerdì 19 maggio 2006 - 13.19

gandalf_03_75 Profilo | Junior Member

Ho la necessità di caricare nel mio progetto una dll (vb .net) senza referenziarla all'interno dello stesso.

Nel vecchio vb esisteva createobject, in vb net questo comando istanzia solo dll COM.
Le DLL create con vb net non sono com.

Esiste un simil comando che posso utilizzare per istanziare la dll?

Programma scritto in vb.net
DLL scritta in vb.net

Vi ringrazio per un eventuale risposta....
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

Cteniza Profilo | Guru

Ti rispondo a patto che tu la smetta di citare vb6 (chi ha dato ha dato, chi ha avuto ha avuto ...) vb.net è altra cosa :).
Per caricare delle dll generate da un linguaggio net devi utilizzare la reflection.
Questo Esempio prende le form di un certo assembly (passato come stringa) e carica in una sortedlist i riferimenti alle forms incontrate all'interno:
Private Sub CaricaAssembly(ByVal pAssemblyName As String)
If System.IO.File.Exists(pAssemblyName) Then
Try
Dim asmb As Assembly = Assembly.LoadFrom(pAssemblyName)
For Each t As Type In asmb.GetTypes()
If t.BaseType.Equals(GetType(Form)) Then
Me.sortedForms.Add(t.[Namespace] + "." + t.Name, t)
End If
Next
Catch ex As Exception
MessageBox.Show("Impossibile caricare " + pAssemblyName + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace)
End Try
End If
End Sub

forno Profilo | Junior Member

Ho segiuto la discussione e ho preso spunto per una mia applicazione. Però io ho messo i forms letti dalla dll in una listbox e vorrei che l'untente scegliesse quale aprire, azione che farà con un pulsante. Ma che codice posso dare al pulsante per aprire la form selezionata nella listbox?
Grazie
Enrico Fornasier

Cteniza Profilo | Guru

Beh io ho realizzato qualche cosa di quel genere.
Fai una form principale, ci metti sopra una listview o una treeview o qualsiasi altro oggetto come bottoni o menuitems che possa memorizzare tags.
Puoi usare anche un'arraylist.
Poi apri le dll e "archivi" i riferimenti sull'oggetto che ti interessa (generato in runtime ovviamente).
Ho messo una cosa simile sul mio blog con un esempio di utilizzo degli attributi.
http://community.visual-basic.it/lucianob/archive/2005/02/27/6061.aspx
Naturalmente lo puoi fare anche senza utilizzare gli attributi personalizzati.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5