using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace CSharpConsoleApp
{
class First
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Second
{
public string SecondName { get; set; }
public First FirstObject { get; set; }
}
class Program
{
static void ReadProperties(object obj, string prefix = " ")
{
foreach (var prop in obj.GetType().GetProperties())
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine(prefix + prop.Name + ": " + prop.GetValue(obj, null));
if (!prop.PropertyType.IsPrimitive)
{
ReadProperties(prop.GetValue(obj, null), prefix + " ");
}
}
}
}
static void Main(string[] args)
{
var sec = new Second
{
SecondName = "SecondName",
FirstObject = new First { FirstName = "FirstName", Age = 12 }
};
ReadProperties(sec);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CnVzaW5nIFN5c3RlbS5UZXh0OwoKbmFtZXNwYWNlIENTaGFycENvbnNvbGVBcHAKewogICAgY2xhc3MgRmlyc3QKICAgIHsKICAgICAgICBwdWJsaWMgc3RyaW5nIEZpcnN0TmFtZSB7IGdldDsgc2V0OyB9CiAgICAgICAgcHVibGljIGludCBBZ2UgeyBnZXQ7IHNldDsgfQogICAgfQoKICAgIGNsYXNzIFNlY29uZAogICAgewogICAgICAgIHB1YmxpYyBzdHJpbmcgU2Vjb25kTmFtZSB7IGdldDsgc2V0OyB9CiAgICAgICAgcHVibGljIEZpcnN0IEZpcnN0T2JqZWN0IHsgZ2V0OyBzZXQ7IH0KICAgIH0KCiAgICBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgUmVhZFByb3BlcnRpZXMob2JqZWN0IG9iaiwgc3RyaW5nIHByZWZpeCA9ICIgIikKICAgICAgICB7CiAgICAgICAgICAgIGZvcmVhY2ggKHZhciBwcm9wIGluIG9iai5HZXRUeXBlKCkuR2V0UHJvcGVydGllcygpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAocHJvcC5HZXRJbmRleFBhcmFtZXRlcnMoKS5MZW5ndGggPT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShwcmVmaXggKyBwcm9wLk5hbWUgKyAiOiAiICsgcHJvcC5HZXRWYWx1ZShvYmosIG51bGwpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3AuUHJvcGVydHlUeXBlLklzUHJpbWl0aXZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVhZFByb3BlcnRpZXMocHJvcC5HZXRWYWx1ZShvYmosIG51bGwpLCBwcmVmaXggKyAiICIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNlYyA9IG5ldyBTZWNvbmQKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2Vjb25kTmFtZSA9ICJTZWNvbmROYW1lIiwKICAgICAgICAgICAgICAgIEZpcnN0T2JqZWN0ID0gbmV3IEZpcnN0IHsgRmlyc3ROYW1lID0gIkZpcnN0TmFtZSIsIEFnZSA9IDEyIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIFJlYWRQcm9wZXJ0aWVzKHNlYyk7CiAgICAgICAgfQogICAgfQp9Cg==