Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Plugin per la propria applicazione

Sto sviluppando in VB6 un'applicazione "modulare", ovvero
costituita da una applicazione base e da vari plugin.
Nello specifico ho una DLL ActiveX (chiamiamola Base.DLL)
che contiene le dichiarazioni di classe comuni (MultiUse), i
tipi e gli enumerati comuni (GlobalMultiUse), e
l'interfaccia per i
plugin (Public Not Createable).
A questo punto il software principale (EXE Standard) e i
plugin (DLL ActiveX) referenziano Base.DLL. I plugin
contengono tutti la classe denominata PlugIn che implementa
l'interfaccia definita in Base.DLL.
L'applicazione base (compilata/distribuita una tantum)
carica
i PlugIn mediante CreateObject(NomeDllSenzaEstensione &
".PlugIn").
Veniamo alle questioni:
1) L'implementazione di alcuni dei metodi esposti
dall'interfaccia "dovrebbe" essere identica per tutte le
classi che la implementano. Se l'ereditarieta' fosse
"totale" potrei costruire una classe base che implementa
tali metodi ma purtroppo in VB c'e' solo ereditarieta' di
interfaccia e tocca riscrivere il codice uguale in ogni
implementazione (copiare per inciso, per ora mi son fatto
una classe template che rinomino ed "espando" di volta in
volta). Esiste un sistema piu' efficiente?
2) Le classi che implementano l'interfaccia "potrebbero"
avere dei parametri aggiuntivi rispetto all'interfaccia, che
andrebbero inizializzati in qualche modo prima di poter
usare il plugin. Ho pensato che potrei delegare questa
"configurazione" ad un'interfaccia grafica contenuta nel
plug-in stesso e fornire il plug-in di metodi
LoadSettings/SaveSettings (o affine) con NomeFile come
parametro. Qualche suggerimento alternativo?
2bis) A proposito del salvataggio, qualcuno dispone di
qualche esempio sulla serializzazione di una classe in un
file di testo impostando la proprieta' Persistable a True?
3) E se buttassi tutto e sviluppassi in .NET? Quale sarebbe
l'approccio corretto per sviluppare lo stesso tipo di
applicazione? Che tipo di progetti dovrei utilizzare e come
dovrei configurarli?
Grazie per l'aiuto,
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

 dovrei configurarli?
Faresti la cosa giusta!
Se cerchi nell'area Tip di UguiDotNET c'é un articolo dell'ottimo Corrado
Cavalli (frequentatore anche di questo NG e dispensatore di preziosi
suggerimenti!). Lo trovi qui:
http://www.ugidotnet.org/tips/tips_read.aspx?ID=46
A parte questo ti converrebbe:
1) Progetto con le interfacce (Libreria di Classi .DLL)
2) Proggetto di tipo windows forms (Tipo EXE standard)
3) DLL dei PlugIn da caricare mediante Reflection
Attento: il passaggio a .NET non é immediato per uno sviluppatore VB6 (lo
so... acc. se lo so!) però vale la pena. Ogni sforzo sarà ripagato!
                    Ciao
                                    Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità

> dovrei configurarli?
E' un discorso troppo lungo da far cosě....
Cerco stasera di buttar giů 2 righe e ne parliamo ok?
Ciao
Andrea

 *funziona* <g>.
Per curiosità... quale?
Intendi dire che fai una classe che implementa un'interfaccia e poi crei
un'altra classe che implementa la stessa inetrfaccia e internamente alla
prima la usi? Se é questa allora chiama ereditarietà simulata e polimorfismo
da interfaccia e non proprio quello che sta chiedendo...
Basta inventarsi l'impossibile ed i trucchi più sporchi per continuare ad
usare VB6 é ora di aggiornarsi (se si può!)...


                                     Allanon

 [SNIP]
Grazie ad entrambi per le dritte.
Come al solito ci ho messo 2 ore per tirar fuori (leggasi
comprendere) qualche informazione valida da quanto
cripticamente scritto da DeerBear ma alla fine lo era
(valida!).
L'idea di implementare l'interfaccia in una classe
"template" e poi di utilizzare tale come membro dei plug-in
era venuta anche a me, son contento di avere avuto un
riscontro positivo.
In ogni caso sto realmente pensando di sviluppare il tutto
in .NET.
Ci ho gia' giochicchiato "seriamente" per un po', ma ancora
non ho sviluppato nulla di "serio".
Staremo a vedere ;)
Grazie ancora,
