Я понимаю, что этот вопрос похож на некоторые другие, но на самом деле они не отвечают на то, что мне нужно. Я пытаюсь использовать 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). Все, что я получаю, - это множество напечатанных цифр «1» и «B» или ошибок. Надеюсь, это имеет смысл.
P.S: Я знаю, что сериализация была бы более простым решением, чтобы поместить все это в JSON, но я не могу использовать это по разным причинам.
РЕДАКТИРОВАТЬ: извините за дублирование. Комментарии и ответы помогли мне лучше понять, что я делаю и что ищу, так что спасибо!