I have an issue. Say I have a Generic class which can have generic properties of other classes and can even have a list of other classes. If i have a function like
public void Read<T>() where T: class, new() 
{
    // Create an instance of our generic class
    var model = new T();
    var properties = typeof(T).GetProperties();
    // Loop through the objects properties
    for(var property in properties) {
        // Set our value
        SetPropertyValue(property, model, "test");
    }
}
private void SetPropertyValue(PropertyInfo property, object model, string value) {
    // Set our property value
    property.SetValue(model, value, null);
}
that would work if I had a class like this:
public class Person
{
    public string Name { get; set; }
}
and I invoked the Read method like this:
Read<Person>();
But if my Person model was like this:
public class Person
{
    public string Name { get; set; }
    public Company Company { get; set; }
}
public class Company 
{
    public string Name { get; set; }
}
And I tried to invoke the Read method again, it would fail because of the property have it's own list of properties. What would be better is if it traversed them too. Is there a way to do that?