Ho risolto il problema... lo pubblico per tutti:
immaginiamo, sulla scia dell'esempio precedente, di avere una lista con i nomi dei campi (tutti property) e sottocampi, qualcosa tipo:
"Automobile.Interni.Sedile.Colore", "Grigio". All'interno di questo ciclo, possiamo chiamare il metodo ricorsivo che segue;
private object SetRecursiveValue(object padre, string[] array, int index, string valore)
{
PropertyInfo prop = padre.GetType().GetProperty(array[index]);
Object obj;
// è l'ultimo caso: mi aspetto di agganciare la stringa all'oggetto immediatamente
// precedente.
if( index == (array.Length -1) )
{
prop.SetValue(padre, valore, null);
return null;
}
else
{
// per tutti gli altri casi
obj = prop.PropertyType.GetConstructor(new Type[] { }).Invoke(new object[] { });
prop.SetValue(padre, obj, null);
index++;
return SetRecursiveValue(obj, array, index, finale);
}
}
laddove padre è un'istanza della classe Automobile, array è il risultato dello split della stringa "Automobile.Interni.Sedile.Colore", index è l'indice dell'array (che dal loop viene chiamato sempre con indice 0, l'indice incrementa nella ricorsione) e valore è l'oggetto stringa finale, "Grigio" per intenderci.
Spero che possa tornare utile anche a qualcun'altro.
Saluti a tutti.