Reflection(Yansıma) .NET ortamındaki yapılara çalışma zamanı (Run-time) esnasında erişebilmemizi sağlayan bir yapıdır.reflection sayesinde classlar içerisinde dolaşabilir,içerdikleri yapılar hakkında bilgi alabilir ve değer alış verişinde bulunabilirsiniz.Özellikle çok sayıda field veya metod içereden class'lar ile çalışırken çok işinize yarayacaktır.
reflection işlemini yapabilmek için System.Reflection Kütüphanesini projemize dahil etmemiz gerekiyor.
gördüğünüz gibi class yapımızda 2 adet field,1 adet property ve 1 adet fonksiyon bulunuyor.şimdi reflection kullanarak bu class içerisinde nasıl gezineceğimizi basitçe inceleyelim.
şimdilik buraya kadar.Reflection konusu geniş bir konu.ben burada sadece bazı özelliklerini paylaştım.kullandıkça ne kadar çok özelliğinin olduğunu zaten sizde görebileceksiniz.
reflection işlemini yapabilmek için System.Reflection Kütüphanesini projemize dahil etmemiz gerekiyor.
using System.Reflection; Basit Bir Class oluşturalım ; public class KimlikBilgileri { private string Ad; public string Ad1 { get { return Ad; } set { Ad = value; } } public string Soyad; public int Topla(int sayi1,int sayi2) { return sayi1 + sayi2; } }
gördüğünüz gibi class yapımızda 2 adet field,1 adet property ve 1 adet fonksiyon bulunuyor.şimdi reflection kullanarak bu class içerisinde nasıl gezineceğimizi basitçe inceleyelim.
KimlikBilgileri kimlik = new KimlikBilgileri(); FieldInfo[] fields = kimlik.GetType().GetFields(); foreach (var fieldinfo in fields) { listBox1.Items.Add("Değişken Adı : " + fieldinfo.Name +" " + fieldinfo.FieldType); } yukarıdaki kod bloğu örneğini oluşturduğumuz KimlikBilgileri Class'ının içerisindeki Field'lara erişimi Sağlar. ve dönen değeri Listbox'a Atar. Aşağıdaki Kodlama Yukarıda örneğini oluşturduğumuz Class içerisindeki Property'ler üzerinde işlem yapmamızı Sağlar. PropertyInfo[] propinfo = kimlik.GetType().GetProperties(); foreach (var prop in propinfo) { MessageBox.Show(prop.Name + "----" + prop.PropertyType); } ve son olarakta Class içerisindeki Metodlarımıza şu şekilde Erişebiliriz; MethodInfo[] metodInfo = kimlik.GetType().GetMethods(); foreach (var metod in metodInfo) { //MethodBody body = metod.GetMethodBody(); ParameterInfo[] param=metod.GetParameters(); for (int i = 0; i < param.Length; i++) { MessageBox.Show(param[i].Name+Environment.NewLine + param[i].ParameterType); } }
şimdilik buraya kadar.Reflection konusu geniş bir konu.ben burada sadece bazı özelliklerini paylaştım.kullandıkça ne kadar çok özelliğinin olduğunu zaten sizde görebileceksiniz.
Yorumlar
Yorum Gönder