C#'ta Yansımayı Anlama
Çalışma zamanında nesneleri incelemek ve değiştirmek için yansımayı kullanın
C#'ta Yansımayı Anlama, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 5 dersinin 5. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 5 dersten oluşur.
Yansımaya Giriş
C# Dilinde Yansımayı Anlama
Bir sonraki derse hoş geldiniz! Bu derste, çalışma zamanında türleri ve nesneleri incelemenizi ve bunlarla etkileşim kurmanızı sağlayan güçlü bir özellik olan C# yansıması hakkında bilgi edineceksiniz. Başlayalım!

Yansıma Nedir?
Yansıma Nedir?
Yansıma, bir programın çalışma zamanında kendi yapısını inceleyebilmesi ve değiştirebilmesidir. Genellikle şu amaçlarla kullanılır:
- Türler, yöntemler ve özelliklerle ilgili meta verilere erişmek.
- Yöntemleri dinamik olarak çağırmak ve alanlara erişmek.
- Serileştiriciler ve ORM'ler gibi çerçeveler ve araçlar oluşturmak.
Önemli Nokta: Yansıma, System.Reflection ad alanının bir parçasıdır.
Tür Bilgilerine Erişme
Tür Bilgilerine Erişme
Bir türle ilgili meta verilere erişmek için Type sınıfını kullanın. Örnek:
İpucu: Tür üyelerini incelemek için GetProperties, GetMethods ve GetFields kullanın.
using System;
class SampleClass {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Type Name: " + type.Name);
Console.WriteLine("Properties:");
foreach (var prop in type.GetProperties()) {
Console.WriteLine("- " + prop.Name);
}
}
}
Nesneleri Dinamik Olarak Oluşturma
Nesneleri Dinamik Olarak Oluşturma
Bir sınıfın örneklerini dinamik olarak oluşturmak için yansımayı kullanabilirsiniz. Örnek:
Önemli Nokta: Nesneleri çalışma zamanında oluşturmak için Activator.CreateInstance kullanın.
using System;
class SampleClass {
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var property = type.GetProperty("Name");
property.SetValue(instance, "Reflection Example");
Console.WriteLine("Name: " + property.GetValue(instance));
}
}
Yöntemleri Dinamik Olarak Çağırma
Yöntemleri Dinamik Olarak Çağırma
Yansıma, yöntemleri derleme zamanında bilmeden çalışma zamanında çağırmanıza olanak tanır. Örnek:
İpucu: Dinamik yöntem çağrıları için GetMethod ve Invoke kullanın.
using System;
class SampleClass {
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var method = type.GetMethod("Greet");
method.Invoke(instance, new object[] { "World" });
}
}
attributes ile Çalışma
attributes ile Çalışma
Yansıma, türlere, yöntemlere veya özelliklere uygulanan özel attributes'ları incelemek için kullanılabilir. Örnek:
Önemli Nokta: attributes bilgilerini almak için GetCustomAttributes kullanın.
using System;
[AttributeUsage(AttributeTargets.Class)]
class SampleAttribute : Attribute {
public string Description { get; }
public SampleAttribute(string description) {
Description = description;
}
}
[Sample("This is a sample class.")]
class SampleClass {}
class Program {
static void Main() {
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(SampleAttribute), false);
foreach (SampleAttribute attr in attributes) {
Console.WriteLine("Description: " + attr.Description);
}
}
}
Uygulama Görevi
Uygulama Görevi
Bir sınıfı incelemek, yöntemlerini ve özelliklerini listelemek ve yöntemlerinden birini dinamik olarak çağırmak için yansımayı kullanan bir program oluşturun. Örnek:
using System;
class SampleClass {
public int Add(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Methods:");
foreach (var method in type.GetMethods()) {
Console.WriteLine("- " + method.Name);
}
object instance = Activator.CreateInstance(type);
var addMethod = type.GetMethod("Add");
int result = (int)addMethod.Invoke(instance, new object[] { 5, 3 });
Console.WriteLine("Result of Add: " + result);
}
}
Yansımayı Kullanma İçin En İyi Uygulamalar
Yansımayı Kullanma İçin En İyi Uygulamalar
En iyi uygulamalardan bazıları şunlardır:
- Yansımayı ölçülü kullanın; çünkü performansı etkileyebilir.
- Tekrarlanan çağrılarda verimliliği artırmak için yansıma sonuçlarını önbelleğe alın.
- Mümkün olduğunda yansıma yerine derleme zamanı çözümlerini tercih edin.
- Eklentiler ve çerçeveler gibi dinamik senaryolar için yansımayı kullanın.
İpucu: Esnek ve dinamik uygulamalar için yansımayı özel attributes'larla birleştirin.
Tebrikler!
Tebrikler!
Tebrikler! C# dilinde çalışma zamanında türleri incelemek ve değiştirmek için yansımayı nasıl kullanacağınızı öğrendiniz. Bu, "Gelişmiş C# Özellikleri" kategorisinin sonudur. Daha fazla kodlama macerasına ilerleyelim!

Sıkça Sorulan Sorular
“C#'ta Yansımayı Anlama” dersi ücretsiz mi?
Evet — “C#'ta Yansımayı Anlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 5 dersten oluşur.
“C#'ta Yansımayı Anlama” dersinde ne öğreneceğim?
Çalışma zamanında nesneleri incelemek ve değiştirmek için yansımayı kullanın C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 5 dersinin 5. dersidir.
“C#'ta Yansımayı Anlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- C#'ta Jenerikler
- Async ve Await: Asenkron Kodla Çalışma
- İş Parçacıklarını ve Görevleri Anlama
- Temsilcileri ve Lambda'ları Keşfetme
- C#'ta Yansımayı Anlama