Пример #1
0
        static void Main(string[] args)
        {
            //DortIslem dortIslem = new DortIslem(2, 3);
            //Console.WriteLine( dortIslem.Topla2());
            //Console.WriteLine( dortIslem.Topla(3,4));

            var tip = typeof(DortIslem);    // Bütün tipleri atayabildiğimiz bir nesnedir.
                                            // bu bir instance değil.
                                            // Benim çalışacağım bir tip var ve o DortIslem'dir diyoruz.

            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 6, 7);

            // Neyin insantecsini oluşturmak istiyoruz???  aslında kod içerisinde
            // yaptığımız new işlemini çalışma anında yapıyoruz. gelen tipe göre gerçeleştirmiş oluyoruz.

            Console.WriteLine(dortIslem.Topla(4, 5));   // mesela ben bir şey yapacağım ama bunun kodlama yaparken toplama olup olmadığını bilmiyorum
            Console.WriteLine(dortIslem.Topla2());      // Reflection ile instance oluşturduğumuzd aonun methodunu da çalıştırabiliyoruz.
                                                        // şöyle ki


            var instance = Activator.CreateInstance(tip, 6, 5);

            MethodInfo methodInfon = instance.GetType().GetMethod("Topla2");

            Console.WriteLine(methodInfon.Invoke(instance, null));                   // GetMethod dediğim zaman, method bilgisine ulaşıyor. Invoke et dediğimizde
                                                                                     // Bu methodu neresi için çalıştıracak hususuna gelirsek içerisine instance yazıyor. Burada ki null parametresiz olduğunu gösterir.
                                                                                     // GetMethod ile istenilen methoda ulaşılıyor. İnvoke ile çalıştırıyor.
                                                                                     // bir tipin methoduna ulaşabilirsiz istersekte onu çalıştırabiliriz.
                                                                                     //   methodInfon.Invoke(instance, null);    burası bir sonuç döndürdüğü için ekrana yazdralım.
                                                                                     // üst satırda '35' te method bilgisi topluyoruz instance ile bağı kaybediyoruz.
                                                                                     // o methodinfoya, topa2adlı infoy çalıştır gibi bilgi vermiş oluyoruz.

            Console.WriteLine("----------------------");

            var metodlar = tip.GetMethods();                                          // Bu yazılan ifadeyle, bu classın' sahip olduğu methodlar geldi

            foreach (var info in metodlar)
            {
                Console.WriteLine("Metod adı: {0}", info.Name);                       // Console.WriteLine("Metod adı: {0}", info.Name);  Bununla methodların İSİMLERİNE.
                foreach (var parameterInfo in info.GetParameters())
                {
                    Console.WriteLine("Parametre: {0}", parameterInfo.Name);         // Console.WriteLine("Metod adı: {0}", info.GetParameters());     MEthodun parametrelerine
                }


                // Burada, parametrelerine ulaşabildiğim gibi Attributelerine de ulaşabilirim.

                foreach (var attribute in info.GetCustomAttributes())
                {
                    Console.WriteLine("Attribute Name : {0}", attribute.GetType().Name);   // varsa eğer ekrana yazacak
                }
            }


            Console.ReadLine();
        }
Пример #2
0
        private static void Reflection()
        {
            var       tip       = typeof(DortIslem);
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 1, 2);

            Console.WriteLine("Cons Toplam : " + dortIslem.Topla2());
            Console.WriteLine("Cons Carpim : " + dortIslem.Carp2());
            Console.WriteLine("Param Toplam : " + dortIslem.Topla(2, 3));
            Console.WriteLine("Param Carpim : " + dortIslem.Carp(3, 4));
        }
Пример #3
0
        private static void PART1()
        {
            // DortIslem dortIslem = new DortIslem(2,3);
            // Console.WriteLine(dortIslem.Topla2());
            // Console.Write(dortIslem.Topla(3,4));

            var       tip       = typeof(DortIslem);
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 6, 7); // bununla bu aynı şey --> DortIslem dortIslem = new DortIslem(2,3);

            Console.WriteLine(dortIslem.Topla(4, 5));
            Console.WriteLine(dortIslem.Topla2());
        }
Пример #4
0
        static void Main(string[] args)
        {
            //DortIslem dislem =new  DortIslem(2,3);
            //Console.WriteLine( dislem.Topla2());
            //Console.WriteLine(dislem.Topla(3,4)) ;
            var       tip       = typeof(DortIslem);
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 6, 7); // DortIslem dislem =new  DortIslem(2,3); aynı şey ama runtime

            Console.WriteLine(dortIslem.Topla(4, 5));
            Console.WriteLine(dortIslem.Topla2());
            Console.ReadLine();
        }
Пример #5
0
        static void Main(string[] args)
        {
            //DortIslem dortIslem = new DortIslem(2, 3);
            //Console.WriteLine(dortIslem.Topla2());
            //Console.WriteLine(dortIslem.Topla(3, 4));


            var       type      = typeof(DortIslem);                               //
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(type, 6, 7); // DortIslem dortIslem = new DortIslem(2, 3); aynı şey. Activator.CreateInstance() obje döndürür.

            Console.WriteLine(dortIslem.Topla2());
            Console.WriteLine(dortIslem.Topla(4, 5));

            Console.ReadLine();
        }
Пример #6
0
        static void Main(string[] args)
        {
            var tip = typeof(DortIslem);                                          // DortIslem tipini al.
            // Programın çalışması esnasında örnek (instance) oluştur. <tip> tipinde istenen parametreler 6,7. DortIslem tipinde dortIslem'e referans gönder.
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 6, 7); //No parameterless constructor defined for this object

            //Console.WriteLine(dortIslem.Topla1(3, 4));
            //Console.WriteLine(dortIslem.Topla2());

            // DortIslem tipinde işlem esnasında bir örnek oluştur, parametresi 6,7. Bununda bir örneğini al.
            var instance = Activator.CreateInstance(tip, 6, 7);

            // DortIslem sınıfının "Topla2" metodunun bilgisini al.
            MethodInfo methodInfo = instance.GetType().GetMethod("Topla2");

            // Method bilgisini içeren methodInfo'yu çalıştır. O bir <instance> tipinde, parametresi yok.
            Console.WriteLine(methodInfo.Invoke(instance, null));

            // Biraz karmaşık görünüyor olabilir. Sadece sıradışı yollardan ilerliyor, anlaması zor değil. Yorumlamaya ve eklemeye açık. 6.45

            /**********/

            var _tip = typeof(DortIslem); // var result = _tip.GetCustomAttributes().ToList(); > item.GetType().Name < Att listesini al ve tipi üzerinden ismini ver.

            // var result = _tip.GetMethod("Topla1"); // <result> üzerinde işlem yapabiliyoruz. Mesela bool sonuc = rs.IsPublic;
            // o metodun erişim seviyesi public mi?
            Console.WriteLine("**********");

            MethodInfo[] metodlar = _tip.GetMethods();                               // Verilen tipin Metotlarını alarak bilgilerini referans ver.

            foreach (MethodInfo _methodInfo in metodlar)                             // Bu bilgilerin içerisinde tek tek gezinmemizi sağlayacak.
            {
                Console.WriteLine("Metot adı: {0}", _methodInfo.Name);               // Metodun adı
                foreach (ParameterInfo parameterInfo in _methodInfo.GetParameters()) // Elimizdeki metodun parametreleri arasında gez.
                {
                    Console.WriteLine("Parametre adı: {0}", parameterInfo.Name);     // Parametrenin adı
                }
            }

            Console.ReadLine();
        }
Пример #7
0
        static void Main(string[] args)
        {
            DortIslem dortIslem = new DortIslem(2, 3);

            Console.WriteLine(dortIslem.Topla2());
            Console.WriteLine(dortIslem.Topla(3, 4));

            var type = typeof(DortIslem);

            DortIslem dortIslemReflection = (DortIslem)Activator.CreateInstance(type, 6, 7);  // çalışma anında gelen tipe göre 13 satırdaki işlem yapılır

            Console.WriteLine(dortIslemReflection.Topla(4, 5));
            Console.WriteLine(dortIslemReflection.Topla2());

            var instance = Activator.CreateInstance(type, 6, 5);

            Console.WriteLine(instance.GetType().GetMethod("Topla2").Invoke(instance, null));


            MethodInfo methodInfo = instance.GetType().GetMethod("Topla2");

            Console.WriteLine(methodInfo.Invoke(instance, null));

            var metodlar = type.GetMethods();

            foreach (var info in metodlar)
            {
                Console.WriteLine("Metod adi : {0}", info.Name);
                foreach (var parameterInfo in info.GetParameters())
                {
                    Console.WriteLine(parameterInfo.Name);
                }

                foreach (var attribute in info.GetCustomAttributes())
                {
                    Console.WriteLine("Attribute Name : {0}", attribute.GetType().Name);
                }
            }

            Console.ReadLine();
        }
Пример #8
0
        static void Main(string[] args)
        {
            DortIslem dortislem    = new DortIslem(4, 5);
            DortIslem dortislemctr = new DortIslem();

            Console.WriteLine(dortislemctr.Carp(2, 4));
            Console.WriteLine(dortislem.Topla2());

            var tip = typeof(DortIslem);

            var instance = (DortIslem)Activator.CreateInstance(tip, 3, 3);

            instance.Carp(2, 3);
            instance.Topla(2, 2);

            MethodInfo methodInfo = instance.GetType().GetMethod("Topla2");

            Console.WriteLine(methodInfo.Invoke(instance, null));

            Console.WriteLine("--------------------------------------");

            var methods = instance.GetType().GetMethods();

            foreach (var method in methods)
            {
                Console.WriteLine("DortIslem Method  :  {0}", method.Name);
                var parameters = method.GetParameters();
                foreach (var parameter in parameters)
                {
                    Console.WriteLine("Parameters :  {0}", parameter.Name);
                }
                var attributes = method.GetCustomAttributes();

                foreach (var attribute in attributes)
                {
                    Console.WriteLine("Attributes  : {0}", attribute.GetType().Name);
                }
            }

            Console.ReadLine();
        }
Пример #9
0
        static void Main(string[] args)
        {
            //DortIslem dortIslem = new DortIslem(2, 3);
            //Console.WriteLine(dortIslem.Topla2());
            ////topla 2 ye değer vermiyoruz çünkü ctordaki değerlerle çalışıyor
            ////AMA TOPLA metotunda bizden değer istiyor
            //Console.WriteLine(dortIslem.Topla(3, 4));

            var type = typeof(DortIslem);                                          //reflection ile benim çalışacağım tip dortıslem
            /* Activator.CreateInstance(type); */                                  //DortIslem dortIslem = new DortIslem(2, 3); Aynı şey, gelen tip ne ise onu instance et
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(type, 6, 7); //OBJE DÖNDÜRÜR ama biz dortısleme aktarmaya çalışıyoruz o yüzden Cast yapmalıyız

            //parametrilisini kullanmak istediğimizde
            dortIslem.Topla(4, 5);
            dortIslem.Topla2();

            var        instance   = Activator.CreateInstance(type, 6, 7);
            MethodInfo methodInfo = instance.GetType().GetMethod("Topla2");

            Console.WriteLine(methodInfo.Invoke(instance, null));//getmethod istedeiğimiz metota ulaştık invoke ile çalıştırdık
            //hangi örneğin topla2 sini çalıştırayım
            Console.WriteLine("-----------------------------------------");

            var metotlar = type.GetMethods();

            foreach (var info in metotlar)
            {
                Console.WriteLine("metot adı : {0} ", info.Name);
                foreach (var parametre in info.GetParameters())
                {
                    Console.WriteLine("parametre : {0} ", parametre.Name);
                }
                foreach (var attribute in info.GetCustomAttributes())
                {
                    Console.WriteLine("Attribute : {0} ", attribute.GetType().Name);
                }
            }
        }
Пример #10
0
        static void Main(string[] args)
        {
            var       tip       = typeof(DortIslem);                              //tip belirlemek için kullanılan bir yöntem.
            DortIslem dortIslem = (DortIslem)Activator.CreateInstance(tip, 3, 4); //Parametre olarak gönderilen tipte bir nesne oluşturuldu.

            Console.WriteLine(dortIslem.Topla(5, 7));                             //oluşturulan nesnenin bir metodu kullanıldı.
            dortIslem.Topla2();

            var instance = Activator.CreateInstance(tip, 7, 8);

            MethodInfo methodInfo = instance.GetType().GetMethod("Topla2"); // oluşturulan instance in çağırılan metodun bilgisi aktarıldı.

            Console.WriteLine(methodInfo.Invoke(instance, null));           //aktarılan metot bilgisine göre o metot çalıştırıldı. ve parametleri gönderildi.

            Console.WriteLine("------------------------------------------------------------------");
            var methodlar = instance.GetType().GetMethods(); //belirtilen tipe ait bütün metotları listeler.

            foreach (var info in methodlar)
            {
                Console.WriteLine("Metotlar: " + info.Name);

                foreach (var parametre in info.GetParameters())//belirtilen tipe ait metotların parametrelerini listeler.
                {
                    Console.WriteLine("Parametre: " + parametre.Name);
                }

                foreach (var attribute in info.GetCustomAttributes()) //belirtilen tipe ait bütün attributeleri listeler.
                {
                    Console.WriteLine("Attribute Name: " + attribute.GetType().Name);
                }
            }
            Console.WriteLine("------------------------------------------------------------------");


            Console.ReadLine();
        }