Problemi reflection e proprietà

giovedì 17 novembre 2005 - 10.36

adima80 Profilo | Junior Member

Ciao, sti smanettando un po con la reflection... Voglio recuperare da una mia classe derivata da Windows.Form le mie proprietà, se uso il metodo type.GetProperties() mi ritorna tutte le proprietà tranne le mie, come mai? inoltre come faccio ad assegnare valori alla proprietà?


p.s.: se uso type.GetProperty("NomeProprietà"); funziona.... :) cmq come faccio a valorizzarla????
grazie

Brainkiller Profilo | Guru

>Ciao, sti smanettando un po con la reflection... Voglio recuperare
>da una mia classe derivata da Windows.Form le mie proprietà,
>se uso il metodo type.GetProperties() mi ritorna tutte le proprietà
>tranne le mie, come mai? inoltre come faccio ad assegnare valori
>alla proprietà?

Ciao,
ho appena fatto un esempio come hai indicato qui. Ho definito una classe (Test) e delle proprietà. Poi ho scritto il codice:

Type d=Type.GetType("WindowsApplication1.Test");
PropertyInfo[] k=d.GetProperties();

e la variabile k contiene esattamente tutte le proprietà definite nella classe Test nel namespace WindowsApplication1.

Perchè non funziona a te?
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

adima80 Profilo | Junior Member

si ho provato: guarda questo è il codice con alcune correzzioni, ads mi da un' eccezzione:

Assembly dll = Assembly.LoadFrom(@"C:\Documents and Settings\All Users\Documenti\WS 2005\Reflect\bin\Debug\Reflect.dll");
Form form_dll = new Form();
form_dll = (Form)dll.CreateInstance("Reflect.Form1", true);
Type type;
type = form_dll.GetType();
FieldInfo fi = type.GetField("S");
fi.SetValue(form_dll, "ovolollo"); <------Eccezzione
form_dll.MdiParent = this;
form_dll.Show();


l'eccezzione generata è:
Use the New keyword to create the instance.
Uso il framework 2.0, in pratica ho creato una dll con dentro una form e la proprietà "S", anche dopo la creazione della nuova istanza dell'assembly nn funge... mah

adima80 Profilo | Junior Member

si ho provato: guarda questo è il codice con alcune correzzioni, ads mi da un' eccezzione:

Assembly dll = Assembly.LoadFrom(@"C:\Documents and Settings\All Users\Documenti\WS 2005\Reflect\bin\Debug\Reflect.dll");
Form form_dll = new Form();
form_dll = (Form)dll.CreateInstance("Reflect.Form1", true);
Type type;
type = form_dll.GetType();
FieldInfo fi = type.GetField("S");
fi.SetValue(form_dll, "ovolollo"); <------Eccezzione
form_dll.MdiParent = this;
form_dll.Show();


l'eccezzione generata è:
Use the New keyword to create the instance.
Uso il framework 2.0, in pratica ho creato una dll con dentro una form e la proprietà "S", anche dopo la creazione della nuova istanza dell'assembly nn funge... mah

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