Exemplo n.º 1
0
        public void ExpandoMixinTest()
        {
            // have Expando work on Addresses
            var user = new User(new Address());

            // cast to dynamicAccessToPropertyTest
            dynamic duser = user;

            // Set strongly typed properties
            duser.Email = "*****@*****.**";
            user.Password = "******";

            // Set properties on address object
            duser.Address = "64 Atlantic Beach Drive";
            //duser.Phone = "808-123-2131";

            // set dynamic properties
            duser.NonExistantProperty = "This works too";

            // shows default value Address.Phone value
            Console.WriteLine(duser.Phone);
        }
Exemplo n.º 2
0
        public void UserExampleTest()
        {
            var user = new User();

            // Set strongly typed properties
            user.Email = "*****@*****.**";
            user.Password = "******";
            user.Name = "Alex";
            user.Active = true;

            // Now add dynamic properties
            dynamic duser = user;
            duser.Entered = DateTime.Now;
            duser.Accesses = 1;

            // you can also add dynamic props via indexer 
            user["NickName"] = "Alex";
            duser["WebSite"] = "http://www.frameworkone.co.za";

            // Access strong type through dynamic ref
            Assert.AreEqual(user.Name, duser.Name);

            // Access strong type through indexer 
            Assert.AreEqual(user.Password, user["Password"]);


            // access dyanmically added value through indexer
            Assert.AreEqual(duser.Entered, user["Entered"]);

            // access index added value through dynamic
            Assert.AreEqual(user["NickName"], duser.NickName);


            // loop through all properties dynamic AND strong type properties (true)
            foreach (var prop in user.GetProperties(true))
            {
                object val = prop.Value;
                if (val == null)
                    val = "null";

                Console.WriteLine(prop.Key + ": " + val.ToString());
            }
        }