title: Most efficient way to map object properties to dictionary where keys represent path using extension method
body: <p>What is the most efficient way for an extension method to map object properties to a IDictionary where :</p>
  
  <ul>
  <li>keys are property paths (e.g. "Customer.Company.Address.Line1")</li>
  <li>values are string representation of the property values (e.g. "123
  Main St." or "" (empty string) when null or default value) </li>
  <li>collection of properties still only contain path (e.g.
  public IList Invoices --> "Customer.Invoices" but value is
  collection count)</li>
  </ul>
  
  <p>Is use of reflection best approach?
  Is there an example?</p>
  
  <p>Thanks
  Z...</p>
  
  <h2>Clarification Updates</h2>
  
  <ul>
  <li>dictionary keys should be paths based on property names not type hierarchy.So if a Customer has property <code>public Company ParentCompany</code> and Company has property <code>public Address BillingAddress</code> then the key path should be "ParentCompany.BillingAddress"</li>
  </ul>