21 Şubat 2014 Cuma

Reflection ile Field'lara Erişmek

Java
Class Sınıfı
getDeclaredField - Verilen isme sahip public olan veya olmayan Field'a erişir
Bu metod ile verilen sınıfa ait public veya non-public tüm field'lara erişilebilir. Ancak kalıtım ile gelen üst sınıfların alanlarına erişilemez

Hiyerarşideki tüm field'lara erişmek için buradaki yazıya bakınız.

getField - Verilen isme sahip public Field'a erişir

Bu metod ile kalıtımla gelen veya sıfın için tanımlanmış olan tüm public field'lara erişilebilir. Burada getField() ve getDeclaredField() arasındaki farklara değinilmiş. Ayrıca burada da örnekler mevcut.
Field sınıfı Object döndürür. Döndürülen nesneyi istenilen tipe çevirmek gerekir. Örnek:

getFields - Tüm field'lara erişir
Bu metod ile tüm Field'lara bir Field[] olarak erişilebilir.

C#
FieldInfo Sınıfı
Type sınıfından ismi bilinen bir field hakkındaki bilgiler FieldInfo sınıfı ile alınır. Örnek'te private olan calls alanına erişiliyor:

Private alana erişmek
var field = GetType().GetField("calls"
                                                  BindingFlags.NonPublic | BindingFlags.Instance);

Public Static alana erişmek
FieldInfo field = typeof (MyClass).GetField ("myField",
                                                       BindingFlags.Public | BindingFlags.Static);
if (field != null)
{
  int value = (int) field.GetValue (null);
}

Hiç yorum yok:

Yorum Gönder