In VB.Net è possibile importare librerie esterne a seconda di alcune variabili?
Ad esempio se var x = 1 importo libreria A
In VB.Net è possibile importare librerie esterne a seconda di alcune variabili?
Ad esempio se var x = 1 importo libreria A
Di che librerie parli in particolare?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Librerie fatte da me. In pratica voglio fare degli include in stile php.
Pensavo di fare un form in cui caricavo degli oggetti (user control con componenti e codici del tutto diversi) a seconda della libreria caricata, che rappresenterebbe una "Parte" di programma.
Avrei potuto fare un form per ogni "Parte" di programma, però, volevo tenere una parte di tutti i form simile e suddividere il programma in più componenti invece che un unico file .exe.
Ovviamente accetto consigli più pratici.
Ciao, io non conosco bene il php, ma se non sbaglio con gli include "aggiungi" del codice al codice. Questo potrebbe forse risultare utile in php, ma in Windows Form non lo è tanto... infatti non si può aggiungere codice sorgente direttamente in runtime, a meno chè non usi apposite classi per compilarlo dinamicamente (su questo argomento, se cerchi in questo forum stesso, potrai leggere diverse discussioni in cui io stesso ho partecipato), ma per il tuo caso non mi sembra che ti sia utile. poi non so ovviamente...Originariamente inviato da world war
Librerie fatte da me. In pratica voglio fare degli include in stile php.
Pensavo di fare un form in cui caricavo degli oggetti (user control con componenti e codici del tutto diversi) a seconda della libreria caricata, che rappresenterebbe una "Parte" di programma.
Avrei potuto fare un form per ogni "Parte" di programma, però, volevo tenere una parte di tutti i form simile e suddividere il programma in più componenti invece che un unico file .exe.
Ovviamente accetto consigli più pratici.
Per caricare dinamicamente una libreria, basta fare una cosa del genere :
ovviamente per fare la scelta con un if non dovrebbe essere difficile...codice:Dim asm As Assembly = Assembly.LoadFile("miaDLL.dll") Dim nomeVar As mioTipo = Activator.CreateInstance(asm.GetType("mioTipo"))
Quello che chiedi è sostanzialmente di fare di plugin aggiuntivi o comunque componenti separati, ma personalmente credo che NON dovresti partire dalla "grafica". La modularità di un programma non è di sicuro solo quella o semplicemente separarla in form differenti... come prima cosa dovresti separare gli strati se vuoi dare la modularità anche a livello grafico, ma per farlo devi partire dalla logica (sempre che non lo stia già facendo, ma se così fosse non credo che avresti postato questa domanda
).
hai già pensato ad una architettura? hai già separato gli strati?
se ragioni solo in termini di grafica, ti ritroverai molto presto ad dover mettere mano alla struttura del programma, e probabilmente lo dovrai fare ogni volta che vuoi "aggiungere" o "aggiornare" qualcosa (ricompilando tutto...).
la grafica è solo la punta dell'iceberg...
Gli include in php fanno esattamente quello che ha detto e poichè avevo qualche esperienza in VB scolastico, mi ero accorto che ciò non era possibile. Ovviamente per sorpassare il problema volevo includere queste librerie esterne in cui sia presente una classe che abbia sempre lo stesso nome ma varia il codice a seconda di ciò che deve essere fatto.
I dati gestiti dall'applicazione principale volevo inviarli alla classe come parametri di qualche metodo.
Come più o meno ha detto, non ho pensato molto alla struttura del programma, ma più all'aspetto grafico in quanto essendo quello più visibile ho necessità di farlo nel miglior modo possibile.
leggi questoOriginariamente inviato da world war
Gli include in php fanno esattamente quello che ha detto e poichè avevo qualche esperienza in VB scolastico, mi ero accorto che ciò non era possibile. Ovviamente per sorpassare il problema volevo includere queste librerie esterne in cui sia presente una classe che abbia sempre lo stesso nome ma varia il codice a seconda di ciò che deve essere fatto.
I dati gestiti dall'applicazione principale volevo inviarli alla classe come parametri di qualche metodo.
Come più o meno ha detto, non ho pensato molto alla struttura del programma, ma più all'aspetto grafico in quanto essendo quello più visibile ho necessità di farlo nel miglior modo possibile.
il thread "dovrebbe" interessarti.
EDIT :
...quello che ha detto e poichè...parli di una terza persona o mi dai del lei?Come più o meno ha detto,...![]()
se è la seconda piantala!, mi fai sentire vecchio
![]()
![]()
Grazie per la tua vecchia discussione, credo che implementerò il tutto quando avrò pianificato meglio il programma visto che potrebbe essere abbastanza utile il tuo metodo!
Ma avrei un'altra domanda, come faccio a scaricare la memoria dalla dll quando questa non mi serve più, dopo averla caricata con il codice che mi avevi scritto in precedenza?
codice:Dim asm As Assembly = Assembly.LoadFile("miaDLL.dll") Dim nomeVar As mioTipo = Activator.CreateInstance(asm.GetType("mioTipo"))
Se ti va, puoi dare un'occhiata a questo progetto modulare, che carica le DLL esattamente come un PLUG-IN: è sufficiente che la DLL esista!![]()
Puoi creare moduli plung-in anche molto complessi, praticamente un'intera applicazione.
Nell'esempio sono caricati gli assembly, i form (solo se permessi dal plug-in) e nell'applicazione principale vengono creati menu, toolbar, etc. per accedere ai form dei plug-in.
Inoltre viene mostrato come passare valori tra applicazione principale e plung-in, ma anche tra plug-in!
Gestione moduli plugin
http://nuke.vbcorner.net/Progetti/NE...T/Default.aspx
![]()