C#’da Reflection(Yansıma) Kullanımı

04 Aralık 2011 – 19:53 C# dilinde reflection kullanarak nesnemize ait property ve metodlara erişebiliriz. Peki bunun bize ne gibi faydası olur? Reflection sayesinde sınıfımıza ait metodlar ile ilgili bilgi edinebiliriz(öznitelikleri, tipleri vs) veya sınıfımıza ait bir metodu akış sırasında çağırabiliriz.(hatta bu metodun adını bilmesek bile)
Aşağıdaki örneği inceleyelim,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csharptrReflection { class Program { class insan { string adi; string soyadi; string websitesi; public string Websitesi { get { return websitesi; } set { websitesi = value; } } public string Soyadi { get { return soyadi; } set { soyadi = value; } } public string Adi { get { return adi; } set { adi = value; } } public void ekranaYazdir(string gelenDeger) { Console.WriteLine(gelenDeger); Console.WriteLine("\nAdi:" + adi + "\nSoyadi: " + soyadi + "\nWebsitesi: " + websitesi); } } static void Main(string[] args) { object nesnemiz; //nesnemizi tanımladık nesnemiz = new insan(); //nesnemizi insan sınıfına dönüştürdük nesnemiz.GetType().GetProperty("Adi").SetValue(nesnemiz, "mert", null); //nesnemizin Adi propertysine setvalue ile değerimizi set ettik nesnemiz.GetType().GetProperty("Soyadi").SetValue(nesnemiz, "can", null); //nesnemizin Soyadi propertysine setvalue ile değerimizi set ettik nesnemiz.GetType().GetProperty("Websitesi").SetValue(nesnemiz, "www.csharptr.com", null); //nesnemizin Websitesi propertysine setvalue ile değerimizi set ettik nesnemiz.GetType().InvokeMember("ekranaYazdir", System.Reflection.BindingFlags.InvokeMethod, null, nesnemiz, new object[] {"Selam"}); //classımızın ekranaYazdır methodunu çağırdık ve metodumuzun parametrelerini object listemiz ile gönderdik. //eğer metodumuz void bir metod olsaydı object[] yerine null gönderecektik. } } } /* ÇIKTI Selam Adi: mert Soyadi: can Websitesi: www.csharptr.com */ } |
Yukarıda görüldüğü gibi insan sınıfımıza erişip, insan sınıfının sahip olduğu özniteliklere değerlerimizi set edebildik ve çalışma sırasında yine insan sınıfında bulunan ekranaYazdir() metodunu çağırarak set ettiğimiz değerleri ekranda gördük.
Etiketler: ”C#, reflection, yansıma”
1 yorum yapılmış
bilgisayar terimleri otomasyonu ödevim var dönem ödevim yardımcı olursasnız sevinirim
3 Ocak 2012 - 21:25