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(); }
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)); }
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()); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); } } }
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(); }