C# 递归查找对象中的属性

C# 递归查找对象中的属性,c#,recursion,reflection,C#,Recursion,Reflection,我有一个RootObject,它可以有多个属性,例如下面的a、B和C。RootObject是API调用的结果。根据用于调用API的查询,它可以返回不同数量的属性。在一次调用中,它可能返回A、B、C。对于不同的查询,它可能返回A、B、X、Y。当我得到RootObject时,我不知道它将拥有哪些属性 现在每个属性都有一个屏幕截图对象,例如B->screenshot。或者,它将在其子属性下隐藏屏幕截图属性。例如B->B1->屏幕截图 为什么我事先不知道属性? API调用返回一个JSON,比如说fooJ

我有一个RootObject,它可以有多个属性,例如下面的a、B和C。RootObject是API调用的结果。根据用于调用API的查询,它可以返回不同数量的属性。在一次调用中,它可能返回A、B、C。对于不同的查询,它可能返回A、B、X、Y。当我得到RootObject时,我不知道它将拥有哪些属性

现在每个属性都有一个屏幕截图对象,例如B->screenshot。或者,它将在其子属性下隐藏屏幕截图属性。例如B->B1->屏幕截图

为什么我事先不知道属性? API调用返回一个JSON,比如说fooJson。我使用RootObject模型反序列化fooJson。有时反序列化后我得到a,B,C。另一次我得到a,B,X,Y

问题

如何获取我的RootObject中存在的所有屏幕截图对象?我想得到以下信息:

rootobject.a.s

rootobject.b.b1.s

public class RootObject
{
  A a;
  B b;
  C c;

}
public class A
{
  Screenshot S;
}
public class B
{
  B1 b1;

}
public class B1
{
  Screenshot S;
}

为了更好地理解您的问题,您为什么特别提到递归?@Dan Cook recursion通常用于树状数据结构,在本例中是类型和属性的元数据树。为了更好地理解您的问题,此问题与,为什么特别提到递归?@Dan Cook递归通常用于树状数据结构,在本例中是类型和属性的元数据树。这个问题与