C#反射-从简单的类获取字段值

我有一堂课:

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);

(我希望你不会 真的 有公共领域,毕竟…)

以上是 C#反射-从简单的类获取字段值 的全部内容, 来源链接: utcz.com/qa/425591.html

回到顶部