C#’da Reflection(Yansıma) Kullanımı Google'da Ara Büyüt Küçült

Genişlet
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 Etiketler: ”, ,

Benzer Yazılar

  1. 1 yorum yapılmış

  2. user avatar Bayram Ünal

    bilgisayar terimleri otomasyonu ödevim var dönem ödevim yardımcı olursasnız sevinirim

    3 Ocak 2012 - 21:25

Yorum Yap

Isim : (gerekli)
E-mail : (gerekli)
Yorumunuz: