Syntax receiver
SyntaxReceiver ile derleme sırasında AST taramayı öğrenirsin.
Syntax receiver
Bir syntax receiver, derleme sırasında sözdizim ağacını (syntax tree) tarayan ve ilginç düğümleri toplayan bir nesnedir. Generator, her sözdizim ağacı için receiver'ı çağırır; receiver, örneğin belirli bir özniteliği taşıyan sınıf bildirimlerini biriktirir.
Bu, derleme zamanı reflection'a benzer: kodu çalıştırmadan, yapısını incelersin. Toplanan düğümler daha sonra kod üretimi için kullanılır.
Toplama ve sayma
Bir receiver genellikle bir List<string> tutar ve her uygun düğümde bir öğe ekler. Derleme sonunda bu liste, generator'a iletilir ve her öğe için kod üretilir.
Bu derste receiver'ı bir ClassCollector sınıfıyla simüle ediyoruz: OnClass metodu bir ad ekler, Count özelliği toplamı verir.
Uygulama ClassCollector ile topla
ClassCollector sınıfı tanımla. public List<string> Classes { get; } = new(); özelliği, public void OnClass(string name) metodu (içinde Classes.Add(name);) ve public int Count => Classes.Count; özelliği olsun. Main'de üç sınıf adı ekle ve Console.WriteLine(collector.Count) yazdır.
Örnek çözümü göster
class ClassCollector { public List<string> Classes { get; } = new(); public void OnClass(string name) { Classes.Add(name); } public int Count => Classes.Count; }. Main'de collector.OnClass üç kez, Console.WriteLine(collector.Count);
Örnek çözüm:
using System;
using System.Collections.Generic;
class ClassCollector
{
public List<string> Classes { get; } = new();
public void OnClass(string name) => Classes.Add(name);
public int Count => Classes.Count;
}
class Program
{
static void Main()
{
var collector = new ClassCollector();
collector.OnClass("UserDto");
collector.OnClass("OrderDto");
collector.OnClass("AccountDto");
Console.WriteLine(collector.Count);
}
}
Kendini test et
-
OnClass çağrısını tamamla
collector.____;Cevabı göster
collector.OnClass("UserDto"); -
Syntax receiver kavramlarını eşleştir
- Syntax tree
- Sözdizim ağacı
- OnClass
- Sınıf düğümü olayı
- Classes list
- Toplanan sınıf adları
-
Syntax receiver ne toplar?
- Çalışma zamanı hataları
- Kullanıcı girdisi
- Sözdizim ağacı düğümleri
- Ağ paketleri
Cevabı göster
Sözdizim ağacı düğümleri — Doğru. Receiver sözdizim ağacı düğümlerini toplar.