CodeBlanks Logo Icon CodeBlanks

Reflection

dart:mirrors ile reflection öğrenirsin.

dart:mirrors ile reflection

Reflection, bir programın kendi yapısını çalışma anında incelemesidir. Dart'ta dart:mirrors kütüphanesi bunu sağlar. Bir sınıfın alanlarını, metotlarını ve annotation'larını görebilirsin.

Örneğin reflect(obj) bir nesnenin aynasını verir; mirror.type ile türüne erişirsin. Bu, kod üretim araçlarında ve serileştirmede kullanışlıdır.

Not: dart:mirrors Flutter web'de çalışmaz. Sunucu ve CLI uygulamalarında kullanılır; performans maliyeti yüksektir.

Ayna almak

Bir nesneyi incelemek için önce import 'dart:mirrors'; yazarsın. Sonra var m = reflect(obj); ile bir ayna alırsın. m.type tür aynasını verir.

Tür aynasından m.type.declarations ile sınıfın bildirimlerini gezersin. Her bildirim bir alan, metod ya da constructor olabilir.

Reflection yavaştır ve boyut artırır; bu yüzden yalnızca gerçekten gerekli olduğunda kullan. Çoğu durumda derleme anı çözümler daha uygundur.

Uygulama Tür adını yazdır

import 'dart:mirrors'; ile reflection kütüphanesini içe aktar. Bir Item sınıfı tanımla. main içinde reflect(Item()) ile bir ayna al ve m.type.reflectedType değerini print ile yazdır.

Başlangıç kodu

main.dart
// dart:mirrors kütüphanesini içe aktar
// Item sınıfını tanımla

void main() {
  // bir Item örneğinin türünü yazdır
}

Örnek çözüm

main.dart
import 'dart:mirrors';

class Item {}

void main() {
  var m = reflect(Item());
  print(m.type.reflectedType);
}

Beklenen çıktı

Item

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 dart:mirrors içe aktarımı

Soru
import '____';

void main() {}
Cevap
import 'dart:mirrors';

void main() {}

Açıklama: reflection için dart:mirrors içe aktarılır.

2 dart:mirrors nerede çalışmaz?

  • CLI uygulamalarında
  • Flutter web'de Doğru cevap
  • Sunucu uygulamalarında
  • Konsol programlarında

Açıklama: dart:mirrors Flutter web'de çalışmaz.

3 Reflection parçaları

Kavram Anlamı
reflect(obj) Nesne aynası
dart:mirrors Reflection kütüphanesi
m.type Tür aynası
declarations Bildirimler

Orta seviye bölümündeki tüm dersler