如何循环类的字段名称

我有一个包含150多个字段的类。 我需要数组中的字段名称(而不是值)。

因为在代码中手动编写150个字段名称(可根据需求变化递增或递减计数)非常困难而且不是很好的方法。

我需要帮助来获取字段名称的循环或获取数组中的字段名称列表,以便我可以循环它并在代码中使用它。 我正在使用visual studio 2008

谢谢

对于所有公共+非公共实例字段:

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

或在VS2005(评论):

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

试试这个:

 var t = typeof(YourTypeHere); List fieldNames = new List(t.GetFields().Select(x => x.Name)); 

尝试

  public static string[] GetFieldNames(Type t) { FieldInfo[] fieldInfos = t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); return fieldInfos.Select(x => x.Name).ToArray(); } 

这项工作对我来说非常完美ExampleClass是类您需要列出所有字段

 public void GetClassFields(Type t) { List fieldNames = new List(t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Select(x => x.Name)); foreach (string name in fieldNames) { Console.WriteLine(name); } } //Usage GetClassFields(typeof(ExampleClass)); 

为我工作

 var t = typeof(YOURTYPE); var allfieldNames = new List(t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Select(x => x.Name)); 

// t为Type