示例#1
0
        public static void Run()
        {
            Console.WriteLine("---------------Zad 1.1.4---------------");
            Kwadrat kw = new Kwadrat(20, 15);

            Console.WriteLine("Wynik wywołania metod zgodnych z warunkami zadania dla obiektu klasy {0}", kw.GetType().ToString());
            znajdzUruchom(kw);
            Console.WriteLine("Jeśli nie wyświetla się żadna metoda Foo, to funkcja działa dobrze.");
        }
示例#2
0
        public static void Run()
        {
            Console.WriteLine("---------------Zad 1.1.3---------------");

            Kwadrat kw = new Kwadrat(15, 20);

            // Przykład dostępu do pól prywatnych
            Console.WriteLine("Przykład dostępu do propercji i metod prywatnych przy pomocy refleksji:");
            PropertyInfo[] props = typeof(Kwadrat).GetProperties(
                BindingFlags.NonPublic |
                BindingFlags.Instance);
            MethodInfo[] methods = typeof(Kwadrat).GetMethods(
                BindingFlags.NonPublic |
                BindingFlags.Instance);

            foreach (PropertyInfo f in props)
            {
                Console.WriteLine("\tPropercja {0}: {1}", f, f.GetValue(kw));
            }

            foreach (MethodInfo m in methods)
            {
                Console.WriteLine("\tMetoda {0}", m);
            }

            int      liczbaProb = 1000000;
            DateTime start;
            DateTime end;
            TimeSpan czas;

            start = DateTime.Now;
            // Dostęp zwykły do pól publicznych
            for (int i = 0; i < liczbaProb; i++)
            {
                var val = kw.example;
            }
            end  = DateTime.Now;
            czas = end - start;
            Console.WriteLine("Dostęp do propercji (próby: {0}):", liczbaProb);
            Console.WriteLine("Czas dla dostępu zwykłego: {0}", czas);

            kw    = new Kwadrat(15, 20);
            start = DateTime.Now;
            // Dostęp za pomocą Refleksji
            for (int i = 0; i < liczbaProb; i++)
            {
                var val = typeof(Kwadrat).GetProperty("example", BindingFlags.Public | BindingFlags.Instance).GetValue(kw);
            }
            end  = DateTime.Now;
            czas = end - start;
            Console.WriteLine("Czas dla dostępu przez refleksje: {0}", czas);
        }