How to loop on field names of a class

Dr. Rajesh Rolen picture Dr. Rajesh Rolen · Sep 10, 2010 · Viewed 12.8k times · Source

I have got a class which contains more then 150 fields. i need the name of fields (not value) in an array.

because its very hard and not a good approach to write 150 fields name (which can be incremented or decremented in count according to requirement change) manually in code.

i need help to get loop through names for field or get list of field names in a array so that i can loop over it and use it in code. i am using visual studio 2008

Thanks

Answer

Marc Gravell picture Marc Gravell · Sep 10, 2010

for all public + nonpublic instance fields:

var fields = typeof(YourType).GetFields(
    BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var names = Array.ConvertAll(fields, field => field.Name);

or in VS2005 (comments):

FieldInfo[] fields = typeof(YourType).GetFields(
    BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
string[] names = Array.ConvertAll<FieldInfo, string>(fields,
    delegate(FieldInfo field) { return field.Name; });