我有一堂课:
class A { public string a = "A-val" , b = "B-val"; }
我想 通过反射* 打印对象成员 *
//Object here is necessary. Object data = new A(); FieldInfo[] fields = data.GetType().GetFields(); String str = ""; foreach(FieldInfo f in fields){ str += f.Name + " = " + f.GetValue(data) + "\r\n"; }
这是期望的结果:
a = A-val b = B-val
不幸的是,这没有用。请帮忙,谢谢。
一旦修复以消除错误(缺少分号和错误的变量名),您发布的代码就 可以 工作-我刚刚尝试了一下,它显示的名称和值没有问题。
我的猜测是,实际上,您正在尝试使用不公开的字段。这段代码:
FieldInfo[] fields = data.GetType().GetFields();
…只会得到 公共 领域。通常,您需要指定您还需要非公共字段:
FieldInfo[] fields = data.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
(我希望你不会 真的 有公共领域,毕竟…)