Я пытаюсь получить доступ к различным частям вложенной структуры класса, используя строку произвольная.
Учитывая следующие (надуманные) классы:
public class Person
{
   public Address PersonsAddress { get; set; }
}
public class Adddress
{
   public PhoneNumber HousePhone { get; set; }
}
public class PhoneNumber
{
   public string Number { get; set; }
}
Я хотел бы получить объект в "PersonsAddress.HousePhone.Number" из экземпляра объекта Person.
В настоящее время я занимаюсь рекурсивным поиском с использованием рефлексии, но я надеюсь, что у некоторых ниндзя есть несколько лучших идей.
Для справки, вот способ (дерьмовый), который я разработал:
private static object ObjectFromString(object basePoint, IEnumerable<string> pathToSearch)
{
   var numberOfPaths = pathToSearch.Count();
   if (numberOfPaths == 0)
     return null;
   var type = basePoint.GetType();
   var properties = type.GetProperties();
   var currentPath = pathToSearch.First();
   var propertyInfo = properties.FirstOrDefault(prop => prop.Name == currentPath);
   if (propertyInfo == null)
     return null;
   var property = propertyInfo.GetValue(basePoint, null);
   if (numberOfPaths == 1)
     return property;
   return ObjectFromString(property, pathToSearch.Skip(1));
}
