Ok, mi manca un'informazione: cos'è che scatena la creazione della form che si trova nella dll? Non può istanziarsi da sola, giusto? Penso che la form venga creata in seguito a qualche evento che si verifica nell'exe, come per esempio il click di un bottone nella form principale.
E' questa form principale, che si trova nell'exe, che deve implementare Common.IFunzionalita. Non devi creare un nuovo oggetto. E' la stessa form che contiene la funzionalità di cui la dll necessita.
nella DLL creo una form(quindi nell'exe io non ho nessun riferimento a questa form)
Comunque credo di aver capito il punto. Tu dall'exe istanzi qualcosa che si trova nella dll ed è questo qualcosa, ad un certo punto, a creare la form.
Beh, devi passare L'IFunzionalita di mano in mano, di costruttore in costruttore.
Nell'exe, creerai l'oggetto che si trova nella dll, passandogli Me come riferimento, cioè la form principale che implementa IFunzionalita
Dim oggetto As New OggettoNellaDll(Me)
Questo è il costruttore di OggettoNellaDll (scusa ma sono arrugginito col VB.NET)
Private _funzionalita As IFunzionalita
Public Sub New(ByVal funzionalita As IFunzionalita)
_funzionalita = funzionalita
End Sub
E l'oggetto, a sua volta, creerà una nuova Form, inoltrandogli la referenza che aveva ricevuto nel suo costruttore.
Dim form As New FormNellaDll(_funzionalita)
form.Show()
Se si potessero allegare file ti manderei una soluzione di Visual Studio. E' più facile a spiegarsi col codice che a parole :/
Modificato da BrightSoul il 23 giugno 2011 00.51 -