public void CorrectlyReturnsDynamicMemberNames_WhenSetViaSetValueMethod() { var observableObject = new CustomObject(); dynamic dynamicObservableObject = observableObject; // Setting value via SetValue method. DateTime dt = DateTime.ParseExact("2016-01-01 01:01:01", "yyyy-MM-dd HH:mm:ss", null); observableObject.SetValue("Property1", "test"); observableObject.SetValue("Property2", 100); observableObject.SetValue("Property3", 3.14F); observableObject.SetValue("Property4", 1.2M); observableObject.SetValue("Property5", dt); // Get dynamic member names and sort (we get keys from dictionary where order is unspecified, so it's better to sort by names). var memberNames = observableObject.GetMetaObject(Expression.Constant(observableObject)).GetDynamicMemberNames().ToList(); memberNames.Sort(); Assert.AreEqual(5, memberNames.Count); Assert.AreEqual("Property1", memberNames[0]); Assert.AreEqual("Property2", memberNames[1]); Assert.AreEqual("Property3", memberNames[2]); Assert.AreEqual("Property4", memberNames[3]); Assert.AreEqual("Property5", memberNames[4]); }