C# Réflexion avec la récursivité

Je suis en train de travailler sur la Réflexion , mais je suis coincé tout en faisant de la récursivité.

Code :

public class User {
  public string Name;
  public int Number;
  public Address Address;    
}


public class Address {
 public string Street;
 public string State;
 public string Country;
}

maintenant, je suis d'impression les valeurs.

 Type t = user.GetType();  
 PropertyInfo[] props = t.GetProperties(); 
 foreach (PropertyInfo prp in props)  
 {  
   if(!prp.GetType().IsPrimitive && prp.GetType().IsClass) 
   {
     //Get the values of the Inner Class.
     //i am stucked over here , can anyone help me with this.

           Type ty = prp.GetType();
           var prpI = ty.GetProperties();
           //var tp = ty.GetType().;
            foreach (var propertyInfo in prpI)
            {
            var value = propertyInfo.GetValue(prp);
            var stringValue = (value != null) ? value.ToString() : "";
            console.WriteLine(prp.GetType().Name + "." + propertyInfo.Name+" Value : " +stringValue);    
            }
   }
   else
   {    
     var value = prp.GetValue(user);   
     var stringValue = (value != null) ? value.ToString() : "";
     console.writeline(user.GetType().Name + "." + prp.Name+" Value : " +stringValue); 
   }
 }

je veux savoir comment faire pour savoir si la propriété est une classe ou d'une primitive. et faire la récursivité si c'est une classe.

  • Pourquoi ne pas vous afficher quelque chose qui au moins compile?
  • Êtes-vous sûr que la réflexion est la solution du problème? Pourquoi voulez-vous faire cela?
  • Pourquoi n'essayez-vous pas Automapper il va faire le travail.
  • Si vous voulez travailler de cette façon, un Dictionnaire au lieu d'une classe serait faire le travail.
  • le Automapper fonctionnera sûrement, mais je veux écrire ce code sur mon propre. si quelqu'un peut m'aider comment faire pour savoir si la propriété est primitif ou de sa classe.
  • Que les sons inutiles, ne pas tomber dans le "Pas inventé ici" piège...
  • double possible de classes Imbriquées et récursivité