//[Test] public void PerformanceTests() { int n = 10000000; object x = null; // ieee.Members[0] start = DateTime.Now; for (int i = 0; i < n; i++) { x = ieee.Members[0]; } stop = DateTime.Now; PrintTest("ieee.Members[0] (direct)", n, Elapsed); start = DateTime.Now; IDynamicIndexer members = DynamicIndexer.Create(typeof(ArrayList).GetProperty("Item")); for (int i = 0; i < n; i++) { x = members.GetValue(ieee.Members, 0); } stop = DateTime.Now; PrintTest("ieee.Members[0] (dynamic reflection)", n, Elapsed); start = DateTime.Now; PropertyInfo membersPi = typeof(ArrayList).GetProperty("Item"); object[] indexArgs = new object[] { 0 }; for (int i = 0; i < n; i++) { x = membersPi.GetValue(ieee.Members, indexArgs); } stop = DateTime.Now; PrintTest("ieee.Members[0] (standard reflection)", n, Elapsed); }
public void TestIndexers() { IDynamicIndexer members = DynamicIndexer.Create(typeof(ArrayList).GetProperty("Item")); Inventor nikola = (Inventor)members.GetValue(ieee.Members, new object[] { 0 }); Assert.AreEqual(tesla, nikola); members.SetValue(ieee.Members, new object[] { 0 }, new Inventor("Ana Maria Seovic", new DateTime(2004, 8, 14), "Serbian")); Assert.AreEqual("Ana Maria Seovic", ((Inventor)members.GetValue(ieee.Members, 0)).Name); members.SetValue(ieee.Members, 1, tesla); Assert.AreEqual("Nikola Tesla", ((Inventor)members.GetValue(ieee.Members, 1)).Name); IDynamicIndexer officers = DynamicIndexer.Create(typeof(Hashtable).GetProperty("Item")); Assert.AreEqual(pupin, officers.GetValue(ieee.Officers, new object[] { "president" })); officers.SetValue(ieee.Officers, "president", new Inventor("Aleksandar Seovic", new DateTime(1974, 8, 24), "Serbian")); Assert.AreEqual("Aleksandar Seovic", ((Inventor)officers.GetValue(ieee.Officers, "president")).Name); }