示例#1
0
        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
        }