我需要创建导航对象结构并打印作为参数提供的任何“结构”的结构的程序。
这些“结构”定义如下:
- 它们只有公共属性
- 每个属性可以是以下类型:
- “结构”
- Primitive(例如 int)、primitive wrapper(例如 Integer)或 String
问题是当我尝试打印作为类或结构的数据成员时。我正在尝试编写一个递归函数来获取一个对象并检查对象中的每个字段:如果它是一个类,我会再次将 curr 字段发送到同一个函数。否则我打印该字段的值。
这是我的代码。但是当我将 fieldInfo 发送到函数时,代码行:--->Type objType = i_obj.GetType();
给我下一个值:
object.GetType
返回 {Name = "RtFieldInfo" FullName = System.Reflection.RtFieldInfo"} System.RuntimeType
public static void getObj(object i_obj)
{
Type objType = i_obj.GetType();
FieldInfo[] objField = objType.GetFields();
foreach (FieldInfo member in objField)
{
Type memberType = member.FieldType;
if(memberType.IsClass)
{
getObj(member);
}
else
{
Console.WriteLine(member.Name + " : " + member.GetValue(i_obj));
}
}
}
如何从 fieldInfo 获取真实对象?