public void AddIndexTest() { dynamic obj = new BaseElasticObject(); (obj as IDictionary <string, object>)["Nome"] = "vitor"; obj.Oid = 1; Assert.AreEqual("vitor", (obj as IDictionary <string, object>)["Nome"]); Assert.AreEqual(1, (obj as IDictionary <string, object>)["Oid"]); Assert.IsTrue((obj as IDictionary <string, object>).ContainsKey("Nome")); Assert.IsTrue((obj as IDictionary <string, object>).ContainsKey("Oid")); var tipo = obj.GetType(); Assert.AreEqual(typeof(BaseElasticObject), tipo); var nomes = (obj.GetDynamicMemberNames() as IEnumerable <string>); Assert.AreEqual(2, nomes.Count()); Assert.AreEqual(2, (obj.AsEnumerable() as IEnumerable <KeyValuePair <string, object> >).Count()); Assert.AreEqual(2, (obj as IDictionary <string, object>).Count); Assert.AreEqual(2, (obj as ICollection <KeyValuePair <string, object> >).Count); }
public void ReflectionTest() { dynamic obj = new BaseElasticObject(); obj.Oid = 2; obj.Nome = "vitor"; obj.Data = DateTime.Today; obj.Valor = 1.23; (obj as IDictionary <string, object>).Add("Foo", "teste foo"); (obj as IDictionary <string, object>)["Bar"] = "teste bar"; foreach (var x in obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public)) { if (x.Name == "Item") { continue; } Console.WriteLine($"{x.Name}:{x.GetValue(obj)}"); } }