【发布时间】:2012-05-03 13:00:42
【问题描述】:
我想打印对象中的所有字段,如果其中一个字段是对象,我想打印它的字段,然后继续(使用递归)。
我写了函数,但是一旦我进入递归,我就会得到这个错误。
在类型“ConsoleApplication1.StringTest”上定义的字段“_str1”不是 目标对象上的字段类型 'System.Reflection.RtFieldInfo'。
这是代码:
static void OutPutObject(dynamic dyn,Type pType)
{
List<string> lFieldsList = new List<string>();
// Get the type of MyClass.
Type lType = pType;
// Get the FieldInfo of MyClass.
FieldInfo[] myFields = lType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
// Display the values of the fields.
for (int i = 0; i < myFields.Length; i++)
{
if (myFields[i].FieldType.IsClass && myFields[i].FieldType.Name != "String")
{
Type tType = myFields[i].FieldType.GetType();
OutPutObject(myFields[i], pType);
}
else
{
Console.WriteLine(string.Format("{0}: {1}", myFields[i].Name, myFields[i].GetValue(dyn)));
}
}
}
public class IntTest
{
private int a = 1;
private int b = 2;
}
public class StringTest
{
private string _str1;
private string _str2;
private IntTest intl;
public StringTest()
{
_str1 = "str1";
_str2 = "str2";
}
}
【问题讨论】:
标签: c#-4.0