„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich generische Methoden dynamisch mit runt festgelegten Argumenten in C#aufrufen?

Wie kann ich generische Methoden dynamisch mit runt festgelegten Argumenten in C#aufrufen?

Gepostet am 2025-03-22
Durchsuche:485

How Can I Dynamically Invoke Generic Methods with Runtime-Determined Type Arguments in C#?

generische Methoden mit dynamischem Typ Argumente aufrufen

problem

In Ihrem Szenario möchten Sie durch eine Sammlung von Schnittstellen in einem bestimmten Namespace iterieren und eine generische Methode für jede Schnittstelle aufrufen. Sie begegnen jedoch Kompilierungszeitfehler aufgrund der unbekannten Typ-Argumente zur Kompilierung der Zeit.

lösung

, um generische Methoden mit Laufzeit-bekannter Argumente dynamisch aufzurufen. Definition.

  1. generieren Sie die generische Methodeinstanz : Rufen Sie die makeGenericMethod -Methode für die generische Methode Definition an, um die spezifische Methodeinstanz für das gewünschte Typ Argument zu generieren. Argumente.
  2. Beispielcode mit System; mit System.linq; mit System.reflexion; öffentliche Klassen -Testklasse { öffentliche statische Leere Callgeneric () { Console.writeLine ($ "generischer Typ: {typeof (t)}"); } öffentliche statische void main () { var montage = montage.geexecutingassembly (); var interfaces = montag.gettypes () .Win (t => t.namespace == "myNameSpace.Interfaces"); var genericMethod = typeof (TestClass) .GetMethod ("callgeneric"); foreach (var interfacetype in Schnittstellen) { var genericMethodinstance = genericMethod.MakeGenericMethod (interfacetype); genericMethodinstance.invoke (null, null); // kein Ziel oder Argumente erforderlich } } }
  3. in diesem Beispiel:
  4. Die Callgeneric -Methode ist definiert als eine generische Methode, die das generische Argument druckt. Methodeinstanz für jeden Schnittstellentyp.

Wir rufen die generische Methodeinstanz ohne Ziel oder Argumente auf, da es sich um eine statische Methode ohne Parameter handelt.

            
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3