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); }
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()); } }