私のクラスは次のとおりです:
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
残念ながら、これは機能しませんでした。助けてください、ありがとうございます。
ベストアンサー1
エラー(セミコロンが欠けている、変数名が間違っている)を修正したら、投稿したコードはする動作 - 試してみたところ、名前と値が問題なく表示されました。
私の推測では、実際には、公開されていないフィールドを使用しようとしているのだと思います。このコード:
FieldInfo[] fields = data.GetType().GetFields();
...のみ取得します公共フィールド。通常は、非公開フィールドも必要であることを指定する必要があります。
FieldInfo[] fields = data.GetType().GetFields(BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance);
(そうならないことを祈ります本当に結局のところ、パブリックフィールドがあります...)