csharp / expert
Snippet
Dynamische Attribut-basierte Methodensuche
Dies ist ein Kernmuster für den Bau von Frameworks. Durch die Verwendung von Reflection zur Suche nach benutzerdefinierten Attributen können Plugin-Systeme oder automatisierte Test-Runner implementiert werden, die Logik dynamisch zur Laufzeit entdecken und ausführen.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
public void RunPlugins(object instance){var methods = instance.GetType().GetMethods().Where(m => m.GetCustomAttributes(typeof(PluginEntryPointAttribute), false).Any());foreach (var method in methods){method.Invoke(instance, null);}}
Erklärung
1
GetCustomAttributes(...)
Ruft Metadaten-Markierungen ab, die auf Methoden angewendet wurden, um spezifisches Verhalten zu identifizieren.
2
method.Invoke(instance, null)
Führt die entdeckte Methode dynamisch aus, unabhängig von ihrem Namen oder hartcodierten Referenzen.