Heim >Backend-Entwicklung >C++ >Wie rufe ich eine generische Methode mit einem laufzeitbestimmten Typargument auf?
Sie möchten eine generische Methode mit aufrufen ein Typargument, das erst zur Laufzeit bekannt ist. Sie haben beispielsweise eine Liste von Schnittstellen und möchten für jede Schnittstelle eine generische Methode aufrufen.
Da das Typargument beim Kompilieren nicht bekannt ist Derzeit können Sie den herkömmlichen Methodenaufruf nicht mit Generika verwenden. Stattdessen müssen Sie Reflektion verwenden, um die generische Methode basierend auf dem zur Laufzeit erhaltenen Typargument dynamisch aufzurufen.
So können Sie diesen Ansatz implementieren:
// Original Method public void Method<T>() { // Method body } // Main Method var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes().Where(t => t.Namespace == "MyNamespace.Interfaces"); foreach (var interfaceType in interfaces) { MethodInfo genericMethod = typeof(Test).GetMethod("Method"); MethodInfo specificMethod = genericMethod.MakeGenericMethod(interfaceType); specificMethod.Invoke(null, null); // No arguments for this example }
Durch die Verwendung von Reflektion können Sie mit diesem Ansatz die generische Methode mit unbekannten Typargumenten zur Laufzeit dynamisch aufrufen.
Das obige ist der detaillierte Inhalt vonWie rufe ich eine generische Methode mit einem laufzeitbestimmten Typargument auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!