How to loop on field names of a class

前端 未结 5 501
甜味超标
甜味超标 2021-01-03 20:54

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

相关标签:
5条回答
  • 2021-01-03 21:30

    Try this:

    var t = typeof(YourTypeHere);
    List<string> fieldNames = new List<string>(t.GetFields().Select(x => x.Name));
    
    0 讨论(0)
  • 2021-01-03 21:30

    This work for me perfectly ExampleClass is class You need list all fields

    public void GetClassFields(Type t)
    {
        List<string> fieldNames = new List<string>(t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Select(x => x.Name));
        foreach (string name in fieldNames)
        {
            Console.WriteLine(name);
        }       
    }
    //Usage
    GetClassFields(typeof(ExampleClass));
    
    0 讨论(0)
  • 2021-01-03 21:32

    try

        public static string[] GetFieldNames(Type t)
        {
            FieldInfo[] fieldInfos = t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            return fieldInfos.Select(x => x.Name).ToArray();
        }
    
    0 讨论(0)
  • 2021-01-03 21:33

    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; });
    
    0 讨论(0)
  • 2021-01-03 21:50

    Worked for me

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

    // t for Type

    0 讨论(0)
提交回复
热议问题