public static void Main() { dynamic myObject = new MyClass(); myObject.FirstName = "John"; // compile time naming - TrySetMember Console.WriteLine(myObject.FirstName); // TryGetMember myObject.AddProperty("Salary"); // runtime naming (try invoke "AddProperty" with argument "Salary") myObject.Salary = 35000m; Console.WriteLine(myObject.Salary); // TryGetMember myObject.AddProperty("DateOfBirth", new DateTime(1980, 23, 11)); // runtime naming (try invoke "AddProperty" with fisrt argument "DateOfBirth" and second argument the desired value) Console.WriteLine(myObject.DateOfBirth); // TryGetMember myObject.RemoveProperty("FirstName"); // runtime naming (try invoke "RemoveProperty" with argument "FirstName") Console.WriteLine(myObject.FirstName); // Should print out empty string (or throw, depending on the desired bahavior) because the "FirstName" property has been removed from the internal dictionary. }