Lookup property in object graph via a string
See the question and my original answer on StackOverflowYou could simply use the standard .NET DataBinder.Eval Method, like this:
object result = DataBinder.Eval(myPerson, "PersonsAddress.HousePhone.Number");