public void GivenObject_Enumerable_MustVisitAllProperty() { var obj = new { A = 1, B = 2 }; var visitor = new JsonVisitor(obj); var map = visitor.ToDictionary(x => x.Key.ToLower(), x => x.Value.ToString()); Assert.AreEqual(2, map.Count); Assert.AreEqual("1", map["a"]); Assert.AreEqual("2", map["b"]); IEnumerable v = visitor; map = new Dictionary <string, string>(); var enu = v.GetEnumerator(); while (enu.MoveNext()) { var c = (KeyValuePair <string, IJsonVisitor>)enu.Current; map.Add(c.Key.ToLower(), c.Value.ToString()); } Assert.AreEqual(2, map.Count); Assert.AreEqual("1", map["a"]); Assert.AreEqual("2", map["b"]); visitor.Dispose(); }