如何使用Reflection获取嵌套类中的属性值?

时间:2016-08-19 14:01:36

标签: c# json unity3d reflection inner-classes

我意识到这个问题与其他问题听起来很相似,但他们并没有真正回答我的需求。我试图使用Reflection来提供一个大数据"其中包含其他数据类的类,并获取所有这些值以快速创建JSON,以便每次添加新数据时都不需要重新编码任何数据。

所以,基本上它看起来像这样:

public class A
{
    public int data1 { set; get; }
    public B b { set; get; }
}
public class B
{
    public int data2 { set; get; }
}

//main method
{
    A a = new A();
    a.data1 = 1;
    a.b = new B();
    a.b.data2 = 2;

    PropertyInfo[] propInfos = typeof(A).GetProperties();
    foreach (PropertyInfo propInfo in propInfos)
    {
        // ??
        //if (!propInfo.GetType().IsPrimitive)
        //{
        //    PropertyInfo[] propInfosForB = propInfo.GetType().GetProperties();
        //    foreach (PropertyInfo propInfoForB in propInfos)
        //    {
        //        print(propInfoForB.GetValue(propInfo, null));
        //    }
        //}
        //else
        {               
            print(propInfo.GetValue(a, null));
        }
    }
}

所以基本上" 1"打印很好,但我无法弄清楚如何获得" 2"来自B(作为A的一部分)。我得到的只是#34; 1"和" B"印刷或错误。希望这是有道理的。

P.S:我知道序列化将是一个更简单的解决方案,将所有这些都放在JSON中,但由于不同的原因我无法使用它。

编辑:抱歉重复。评论/回复帮助我更好地了解了我正在做什么以及我正在寻找什么,尽管如此,谢谢!

0 个答案:

没有答案