I have a class:
class A { public string a = "A-val" , b = "B-val"; }
I want to print the object members by reflection
//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"; }
Here is the desired result:
a = A-val b = B-val
Unfortunately this did not work. Please help, thanks.
Once fixed to get rid of the errors (lacking a semi-colon and a bad variable name), the code you've posted does work - I've just tried it and it showed the names and values with no problems.
My guess is that in reality, you're trying to use fields which aren't public. This code:
FieldInfo[] fields = data.GetType().GetFields();
... will only get public fields. You would normally need to specify that you also want non-public fields:
FieldInfo[] fields = data.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
(I hope you don't really have public fields, after all...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With