オブジェクト内のすべてのフィールドを印刷したいのですが、フィールドの1つがオブジェクトの場合は、フィールドを何度も(再帰的に)印刷したいと思います。
関数を作成しましたが、再帰に入るとこのエラーが発生します。
タイプ'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";
}
}