System.Reflection : Passaggio parametri

giovedì 19 novembre 2009 - 16.19

Franto Profilo | Junior Member

Ciao a tutti, io utilizzo la System.Reflection per attivare delle form, poiché il loro nome è salvato su un campo memorizzato su db.
Ora, io dovrei passare dei parametri alla form che viene attivata, ma non so come fare perché il metodo .Show() ovviamente non accetta parametri.

Questo è ciò che faccio:

Assembly vAssembly = Assembly.GetExecutingAssembly();
Form vForm = vAssembly.CreateInstance(vMenuitem[0].Itemsdeform) as Form;
vForm.MdiParent = this;
vForm.Show();

e fin qui tutto bene, "vMenuitem[0].Itemsdeform" contiente in formato stringa il nome del component da attivare.

Il mio problema nasce quando provo a passare a vForm un parametro.
Ho provato a creare in vForm una .Init() con un parametro in input e richiamarla con vForm.Init(string pParam), ma la build mi da errore dicendo che non trova .Init().

Come posso fare?

Grazie


--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.

Teech Profilo | Expert

Te lo scrivo in VB (non uso C# anche se so leggerlo :-), mi scuso...)

Prova a cambiare questa riga
Form vForm = vAssembly.CreateInstance(vMenuitem[0].Itemsdeform) as Form;

Con questo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

Franto Profilo | Junior Member

Ho provato, cercando di adattarla a c#, ma il risultato non cambia..riesco comunque solo ad attivare la form con .Show, ma non vedo i metodi pubblici che ho creato..


--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.

Teech Profilo | Expert

Se vForm è un'istanza di una Classe Form puoi vedere solo i metodi pubblici di questa classe...
Per vedere i metodi pubblici della classe TuaForm (che deriva sicuramente da Form), devi usare la reflection e più specificamente le funzioni GetMethods o GetMethod, mentre per le proprietà devi usare GetProperty o GetProperties... Se non erro con questi metodi della reflaction è possibile accedere anche a proprietà e metodi protetti e privati (ma vado a memoria).
Quello che ho indicato io è una forma "abbreviata" per istanziare un oggetto attraverso un costruttore che accetta parametri...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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