Type, MethodInfo, Aktivierung und eigene Attribute
Ermitteln Sie Type-Objekte, finden Sie MethodInfo, rufen Sie Methoden auf, erstellen Sie Instanzen mit Activator und definieren oder lesen Sie eigene Attribute.
Type, MethodInfo, Aktivierung und eigene Attribute ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Überblick
Ziel: Reflection sicher verwenden.
- Type ermitteln
- MethodInfo finden
- Mit Activator erstellen
- Attribute definieren und lesen
Type ermitteln
Ermitteln Sie Type über typeof, eine Instanz mit GetType() oder anhand des Namens über Type.GetType.
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
Verwenden Sie GetMethod, um eine Methode zu finden, und Invoke, um sie aufzurufen. Übergeben Sie die Instanz und ein Argumentarray.
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
}
}
Grundlagen von Activator
Activator.CreateInstance(Type) erstellt ein Objekt mithilfe des öffentlichen parameterlosen Konstruktors.
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);
}
}
Benutzerdefinierte Attribute
Erstellen Sie eine kleine Attribute-Klasse und rufen Sie sie über GetCustomAttributes für den Typ oder die Methode ab.
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);
}
}
Tipps und Sicherheit
Tipps:
- Prüfen Sie, ob null von Type.GetType zurückgegeben wird und ob Member fehlen.
- Verwenden Sie nach Möglichkeit typeof (schneller und sicherer).
- Zentralisieren und dokumentieren Sie die Verwendung von Reflection sorgfältig.
- Verwenden Sie BindingFlags für Suchen nach nicht öffentlichen oder statischen Membern.
Grundlagen der Aktivierung
Zusammenfassung
Zusammenfassung: Rufen Sie einen Type ab, suchen Sie nach MethodInfo, erstellen Sie die Instanz mit Activator und lesen Sie Attribute mithilfe von GetCustomAttributes aus.
Häufig gestellte Fragen
Ist die Lektion „Type, MethodInfo, Aktivierung und eigene Attribute“ kostenlos?
Ja — der vollständige Text von „Type, MethodInfo, Aktivierung und eigene Attribute“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Type, MethodInfo, Aktivierung und eigene Attribute“?
Ermitteln Sie Type-Objekte, finden Sie MethodInfo, rufen Sie Methoden auf, erstellen Sie Instanzen mit Activator und definieren oder lesen Sie eigene Attribute. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.
Wie lange dauert die Lektion „Type, MethodInfo, Aktivierung und eigene Attribute“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Type, MethodInfo, Aktivierung und eigene Attribute
- Informationen auf Quelltextebene (Caller-Attribute)
- Einfache Metaprogrammierungs-Szenarien