GetFields

martedì 03 aprile 2007 - 15.17

stena Profilo | Junior Member

Type o = this.GetType();
FieldInfo[] member = o.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
FieldInfo[] member1 = o.GetFields(BindingFlags.Static);
FieldInfo[] member2 = o.GetFields(BindingFlags.Instance);
FieldInfo[] member3 = o.GetFields(BindingFlags.NonPublic);
FieldInfo[] member4 = o.GetFields(BindingFlags.Public);

Come è possibile che member mi restituisca un array di 20 elementi, mentre in tutti gli altri mi trovo array di 0 elementi ?

munissor Profilo | Senior Member

Perchè le ultime chiamate non hanno senso secondo me...

Dovresti usare "Public | Instance", "Public | Static", "NonPublic | Instance" e "NonPublic | Static."

stena Profilo | Junior Member

Postate come nell'esempio concordo che le ultime chiamata non hanno senso.

Il mio post era solo un esempio per capire perchè se member mi restituisce un array i cui elementi hanno la proprietà IsPublic = true,
allora anche "FieldInfo[] member4 = o.GetFields(BindingFlags.Public)" mi dovrebbe restituire la stessa cosa.
Poi sul suo utilizzo nulla vieta che io effettui una ricerca esclusivamente sui campi public.

munissor Profilo | Senior Member

Sulla guida di BindingFlags (.NET 2.0) dice chiaramente che i flags vanno usati in combinazioni.

Se tu non specifichi ne instance ne static lui cerca membri che non so nè statici nè di istanza, ovviamente questo non è possibile e ti viene restituito un insieme vuoto.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5