无法获取对象的字段

时间:2014-11-03 09:39:16

标签: c#

简单的c#控制台应用程序,用于检查如何获取未知对象的字段。

public class A
{
    public int id;
    public string name;
    public string desc;
}

class Program
{
    static void Main(string[] args)
    {
        A a = new A();
        getProp(a);
        Console.ReadKey();
    }

    static object getProp(object o)
    {
        Type type = o.GetType();
        PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

        //Do Something
        return null;
    }
}

我没有得到任何领域。 pros内部没有任何价值。我必须得到object o的字段名称。

1 个答案:

答案 0 :(得分:1)

您尝试提取的成员不是 属性 ,而是 字段 。请尝试以下方法:

var fields = typeof(A).GetFields();

或者:

static FieldInfo[] GetFields(object o)
{
    Type type = o.GetType();
    FieldInfo[] fields = type.GetFields();

    return fields;
}

为了获取对象的字段值:

var fields = GetFields(obj);
foreach(var field in fields)
{
  Console.WriteLine(field.GetValue(obj));
}

来自MSDN:

  

Type.GetFields方法

     

返回当前Type的所有公共字段。