public void TwoWayXmlSerializeExpandoTyped() { // Set standard properties var ex = new User { Name = "Name", Active = true }; // set dynamic properties dynamic exd = ex; exd.Entered = DateTime.Now; exd.Company = "Company"; exd.Accesses = 10; // set dynamic properties as dictionary ex["Address"] = "Address 123"; ex["Email"] = "*****@*****.**"; ex["TotalOrderAmounts"] = 51233.99M; // Serialize creates both static and dynamic properties // dynamic properties are serialized as a 'collection' string xml; SerializationHelper.SerializeObject(exd, out xml); Trace.WriteLine("*** Serialized Dynamic object:"); Trace.WriteLine(xml); Assert.IsTrue(xml.Contains("Name")); // static Assert.IsTrue(xml.Contains("Company")); // dynamic // Serialize var user2 = SerializationHelper.DeSerializeObject(xml, typeof(User)); SerializationHelper.SerializeObject(exd, out xml); Trace.WriteLine(xml); Assert.IsTrue(xml.Contains("Name")); // static Assert.IsTrue(xml.Contains("Company")); // dynamic }