Esempio n. 1
0
        //[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);
        }
Esempio n. 2
0
        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);
        }