using System.Collections.Generic;
using System.ComponentModel;
public static void Main(string[] args)
var person = new Person(){Name = "poo", Age = 1, Address = new Address(){Street = "downing"}};
dynamic blah = person.ToDynamic();
Console.WriteLine(blah.Name + " " + blah.Address.Street);
public static class ObjectExtensions
public static dynamic ToDynamic(this object value)
IDictionary<string, object> expando = new ExpandoObject();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType()))
expando.Add(property.Name, property.GetValue(value));
return (ExpandoObject)expando;