Type, MethodInfo, etkinleştirme ve özel öznitelikler
Type nesnelerini alın, MethodInfo konumunu bulun, yöntemleri çağırın, Activator ile örnekler oluşturun ve özel öznitelikleri tanımlayıp okuyun.
Type, MethodInfo, etkinleştirme ve özel öznitelikler, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. 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 3 dersten oluşur.
Genel görünüm
Hedef: Yansımayı güvenli biçimde kullanmak.
- Type elde etmek
- MethodInfo bulmak
- Etkinleştirici ile oluşturmak
- Öznitelikleri tanımlamak ve okumak
Type elde etme
typeof ile, GetType() kullanarak bir örnekten veya Type.GetType aracılığıyla ada göre Type elde ediniz.
using System;
public class Sample { }
public class Program
{
public static void Main(string[] args)
{
// 1) From a compile-time type
Type t1 = typeof(Sample);
// 2) From an instance
Sample s = new Sample();
Type t2 = s.GetType();
// 3) From a full name (needs assembly-qualified name for external types)
Type t3 = Type.GetType("System.String");
Console.WriteLine(t1.Name + ", " + t2.FullName + ", " + (t3 == null ? "null" : t3.Name));
}
}
MethodInfo.Invoke
Bir yöntemi bulmak için GetMethod, çağırmak için Invoke kullanınız. Örneği ve bağımsız değişken dizisini geçiriniz.
using System;
using System.Reflection;
public class Greeter
{
public string Hello(string name) { return "Hello, " + name; }
}
public class Program
{
public static void Main(string[] args)
{
Greeter g = new Greeter();
Type t = typeof(Greeter);
MethodInfo mi = t.GetMethod("Hello"); // public instance method
object result = mi.Invoke(g, new object[] { "Ada" }); // call dynamically
Console.WriteLine(result); // Hello, Ada
}
}
Activator temelleri
Activator.CreateInstance(Type), genel erişimli parametresiz oluşturucuyu kullanarak bir nesne oluşturur.
using System;
public class Person
{
public string Name { get; set; }
public Person() { Name = "Unknown"; } // parameterless ctor
}
public class Program
{
public static void Main(string[] args)
{
Type tp = typeof(Person);
object o = Activator.CreateInstance(tp); // uses public parameterless ctor
Person p = (Person)o;
p.Name = "Alan";
Console.WriteLine("Created: " + p.Name);
}
}
Özel öznitelikler
Küçük bir Attribute sınıfı oluşturun ve bunu tür veya yöntem üzerinde GetCustomAttributes aracılığıyla alın.
using System;
using System.Reflection;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class LabelAttribute : Attribute
{
public string Text { get; private set; }
public LabelAttribute(string text) { Text = text; }
}
[Label("Utility class")]
public class Utils
{
[Label("Adds two ints")]
public static int Add(int a, int b) { return a + b; }
}
public class Program
{
public static void Main(string[] args)
{
Type t = typeof(Utils);
// Read class attribute
object[] classAttrs = t.GetCustomAttributes(typeof(LabelAttribute), false);
if (classAttrs.Length > 0)
Console.WriteLine("Class label: " + ((LabelAttribute)classAttrs[0]).Text);
// Read method attribute
MethodInfo mi = t.GetMethod("Add");
object[] methodAttrs = mi.GetCustomAttributes(typeof(LabelAttribute), false);
if (methodAttrs.Length > 0)
Console.WriteLine("Method label: " + ((LabelAttribute)methodAttrs[0]).Text);
}
}
İpuçları ve güvenlik
İpuçları:
- Type.GetType sonucunun null olma ve üyelerin eksik olma durumlarını denetleyin.
- Mümkün olduğunda typeof kullanmayı tercih edin (daha hızlı ve daha güvenlidir).
- Yansıma kullanımını merkezi bir yerde tutun ve iyi belgeleyin.
- Genel erişimli olmayan veya statik aramalar için BindingFlags kullanın.
Etkinleştirme temelleri
Özet
Özet: Bir Type alın, MethodInfo bulun, Activator ile oluşturun ve GetCustomAttributes kullanarak öznitelikleri okuyun.
Sıkça Sorulan Sorular
“Type, MethodInfo, etkinleştirme ve özel öznitelikler” dersi ücretsiz mi?
Evet — “Type, MethodInfo, etkinleştirme ve özel öznitelikler” 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 3 dersten oluşur.
“Type, MethodInfo, etkinleştirme ve özel öznitelikler” dersinde ne öğreneceğim?
Type nesnelerini alın, MethodInfo konumunu bulun, yöntemleri çağırın, Activator ile örnekler oluşturun ve özel öznitelikleri tanımlayıp okuyun. 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, 3 dersinin 1. dersidir.
“Type, MethodInfo, etkinleştirme ve özel öznitelikler” 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
- Type, MethodInfo, etkinleştirme ve özel öznitelikler
- Kaynak düzeyi bilgileri (Caller öznitelikleri)
- Hafif meta programlama senaryoları