简单的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
的字段名称。
答案 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的所有公共字段。