AddSource
AddSource ile üretilen kodu derlemeye eklemeyi öğrenirsin.
AddSource
AddSource(hintName, source) metodu, üretilen C# kodunu derlemeye ekler. hintName benzersiz bir dosya adıdır (genelde .g.cs uzantılı); source ise üretilen kod metnidir.
Bu, generator'ın çıktıyı derleyiciye ilettiği son adımdır. Her çağrı ayrı bir kaynak dosya gibi işlenir ve derlemenin parçası olur.
Kaynak listesi tutma
Bu derste SourceEmitter adında statik bir sınıf tanımlayacağız. AddSource metodu, üretilen kodu bir List<(string, string)>'e ekler; bu liste gerçek derlemedeki ek kaynak dosyalarını simüle eder.
Bu yaklaşım, generator'ın hangi dosyaları ürettiğini konsol çıktısıyla görmemizi sağlar. Listenin sırası eklenme sırasını korur.
Uygulama SourceEmitter ile kaynak ekle
SourceEmitter statik sınıfı tanımla. public static List<(string Hint, string Source)> Sources { get; } = new(); özelliği ve public static void AddSource(string hintName, string source) metodu (içinde Sources.Add((hintName, source));) olsun. Main'de iki öğe ekle: SourceEmitter.AddSource("UserDto.g.cs", "public class UserDto { }") ve SourceEmitter.AddSource("OrderDto.g.cs", "public class OrderDto { }"). Sonra foreach ile entry.Hint'leri yazdır.
Örnek çözümü göster
static class SourceEmitter { public static List<(string Hint, string Source)> Sources { get; } = new(); public static void AddSource(string hintName, string source) { Sources.Add((hintName, source)); } }. Main'de iki AddSource, foreach (var entry in SourceEmitter.Sources) Console.WriteLine(entry.Hint);
Örnek çözüm:
using System;
using System.Collections.Generic;
static class SourceEmitter
{
public static List<(string Hint, string Source)> Sources { get; } = new();
public static void AddSource(string hintName, string source)
{
Sources.Add((hintName, source));
}
}
class Program
{
static void Main()
{
SourceEmitter.AddSource("UserDto.g.cs", "public class UserDto { }");
SourceEmitter.AddSource("OrderDto.g.cs", "public class OrderDto { }");
foreach (var entry in SourceEmitter.Sources)
{
Console.WriteLine(entry.Hint);
}
}
}
Kendini test et
-
AddSource metodunun ilk parametresi neyi belirtir?
- Üretilen kodun içeriği
- İpucu adı (hint name)
- Sınıf adı
- Namespace
Cevabı göster
İpucu adı (hint name) — Doğru. İlk parametre hint name'dir (dosya adı).
-
AddSource parametrelerini eşleştir
- hintName
- Benzersiz dosya adı
- source
- Üretilen kod metni
- .g.cs
- Üretilen dosya uzantısı
-
AddSource çağrısını tamamla
SourceEmitter.AddSource("UserDto____", "public class UserDto { }");Cevabı göster
SourceEmitter.AddSource("UserDto.g.cs", "public class UserDto { }");