Nedir bu reflection ? | C#

0xd2

Katılımcı Üye
15 Mar 2018
765
211
Merhabalar, Bu gün sizlerle kısa öz ve elimden geldiğince yalın bir şekilde bir şekilde Reflection kütüphanesinden bahsedeceğiz.
Peki nedir yahu bu ? Ne işe yarar ?

Reflection kütüphanesi (Türkçe karşılığı aynalama olarak geçmektedir.) esnek bir yapı kullanmak isteyenler için bulunmaz bir nimettir. Programın çalışma anında object üzerindeki verilerin okunmasına hatta değiştirmesine olanak sağlayan tatlı mı tatlı bir kütüphanedir.
hemen anlatmaya başlayalım

Visual studiomuzdan bir konsol uygulaması açıp kütüphanemizi ekleyelim
C#:
using System.Reflection; //kütüphanemizi oluşturduğumuz zaman bu şekilde ekleyebiliriz. Genelde otomatik olarak eklenmektedir lakin yine de kontrol etmekte fayda var.
using System;
Şimdi class oluşturalım ve onun üzerinden ilerleyelim
C#:
public class User
{
    public int Id { get; set; }
    public string Isim { get; set; }
    
}
Evet bir adet sınıf oluşturduk şimdi testlerimizi//oynamalarımızı yapabilmek adına bir "User" sınıfından obje oluşturalım.
C#:
var user = new User
    {
        Id = 1,
        Isim = "Veli",
      
    };

Reflection ile değişiklik yapmak istiyorsak Type sınıfında bulunan GetProperties fonksiyonu ile nesneye ait özellikleri alabilmekteyiz. Bknz: PropertyInfo

Evet yukarda verdiğim linkte bulunan fonksiyonlarımızı incelediğinizi varsayarak devam ediyoruz.
SetValue fonksiyonu bir nesne ile bağlantısı bulunmamakta olup SetValue fonksiyonuna parametre olarak tanımlamamız lazım.
String üzerinden ilerlediğimiz için parametlererimize "null" veriyoruz bknz;
C#:
var Isim = IsimProperty.GetValue(user, null);
IsimProperty.SetValue(user, "VeliTTTTTT", null);
Isim = IsimProperty.GetValue(user, null);

Yukarda fark ettiğiniz üzere veli yerine VeliTTTTTT olarak yazdım burada en başta nesneye verdiğimiz değeri karşımıza çıkartacaktır.
Ardından SetValue ile nesneyi güncellediğimiz zaman bize "VeliTTTTTT" yazısını çıkartacaktır.

Bu günlük bu kadar reflection yeter diğer fonksiyonları ilerleyen zamanlarda anlatmaya çalışalım.

Kullandığım kaynaklar:
Yansıma (C#)
PropertyInfo Class (System.Reflection)

 
Son düzenleme:

woxr1n.online

Katılımcı Üye
18 Nis 2022
600
302
Merhabalar, Bu gün sizlerle kısa öz ve elimden geldiğince yalın bir şekilde bir şekilde Reflection kütüphanesinden bahsedeceğiz.
Peki nedir yahu bu ? Ne işe yarar ?

Reflection kütüphanesi (Türkçe karşılığı aynalama olarak geçmektedir.) esnek bir yapı kullanmak isteyenler için bulunmaz bir nimettir. Programın çalışma anında object üzerindeki verilerin okunmasına hatta değiştirmesine olanak sağlayan tatlı mı tatlı bir kütüphanedir.
hemen anlatmaya başlayalım

Visual studiomuzdan bir konsol uygulaması açıp kütüphanemizi ekleyelim
C#:
using System.Reflection; //kütüphanemizi oluşturduğumuz zaman bu şekilde ekleyebiliriz. Genelde otomatik olarak eklenmektedir lakin yine de kontrol etmekte fayda var.
using System;
Şimdi class oluşturalım ve onun üzerinden ilerleyelim
C#:
public class User
{
    public int Id { get; set; }
    public string Isim { get; set; }
    public string Soyisim { get; set; }
}
Evet bir adet sınıf oluşturduk şimdi testlerimizi//oynamalarımızı yapabilmek adına bir "User" sınıfından obje oluşturalım.
C#:
var user = new User
    {
        Id = 1,
        Isim = "Veli",
        Soyisim = "Meli"
    };

Reflection ile değişiklik yapmak istiyorsak Type sınıfında bulunan GetProperties fonksiyonu ile nesneye ait özellikleri alabilmekteyiz. Bknz: PropertyInfo

Evet yukarda verdiğim linkte bulunan fonksiyonlarımızı incelediğinizi varsayarak devam ediyoruz.
SetValue fonksiyonu bir nesne ile bağlantısı bulunmamakta olup SetValue fonksiyonuna parametre olarak tanımlamamız lazım.
String üzerinden ilerlediğimiz için parametlererimize "null" veriyoruz bknz;
C#:
var Isim = IsimProperty.GetValue(user, null);
IsimProperty.SetValue(user, "VeliTTTTTT", null);
Isim = IsimProperty.GetValue(user, null);

Yukarda fark ettiğiniz üzere veli yerine VeliTTTTTT olarak yazdım burada en başta nesneye verdiğimiz değeri karşımıza çıkartacaktır.
Ardından SetValue ile nesneyi güncellediğimiz zaman bize "VeliTTTTTT" yazısını çıkartacaktır.

Bu günlük bu kadar reflection yeter diğer fonksiyonları ilerleyen zamanlarda anlatmaya çalışalım.

Kullandığım kaynaklar:
Yansıma (C#)
PropertyInfo Class (System.Reflection)

Elinize Sağlık Hocam
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.