Heim > Backend-Entwicklung > C++ > Wie kann ich generische Typargumente in generischen C#-Methoden dynamisch angeben?

Wie kann ich generische Typargumente in generischen C#-Methoden dynamisch angeben?

Mary-Kate Olsen
Freigeben: 2025-01-17 20:27:10
Original
650 Leute haben es durchsucht

How Can I Dynamically Specify Generic Type Arguments in C# Generic Methods?

Generische C#-Methode: flexible Verwendung variabler Typparameter

Bei der Verwendung generischer Methoden in C#, wie z. B. DoesEntityExist<T> (wobei T einen Typ darstellt, der der IGloballyIdentifiable-Schnittstelle entspricht), können Probleme bei der Kompilierung auftreten, wenn Sie versuchen, Variablentypen zur dynamischen Angabe generischer Typparameter (z. B als Type t = entity.GetType();) Fehler. Dies liegt daran, dass C#-Generika erfordern, dass Typinformationen zur Kompilierungszeit bekannt sind.

Verwenden Sie den Reflexionsmechanismus

Um diese Einschränkung zu überwinden, kann ein Reflexionsmechanismus verwendet werden. Bei dieser Technik werden die Methoden „GetMethod“ und „MakeGenericMethod“ für das MethodInfo-Objekt aufgerufen, das der generischen Methode zugeordnet ist. Dadurch können Sie einen Typparameter dynamisch bereitstellen, auch wenn dieser erst zur Laufzeit bekannt ist.

<code class="language-csharp">MethodInfo method = GetType().GetMethod("DoesEntityExist")
                             .MakeGenericMethod(new Type[] { t });
method.Invoke(this, new object[] { entityGuid, transaction });</code>
Nach dem Login kopieren

Methodengenerizität verbessern

Ein anderer Ansatz besteht darin, die aufrufende Methode selbst zu ändern, um sie zu einer generischen Methode zu machen, sodass Sie die erforderlichen Typparameter als Parameter übergeben können. Dadurch wird die Typauswahlentscheidung auf eine höhere Ebene gehoben und nachfolgende Methodenaufrufe vereinfacht.

Zusätzliche Erklärung

Um eine spezifischere Anleitung zu geben, ist es am besten, kontextbezogenere Informationen zum Problem bereitzustellen. Manchmal kann die Verwendung von Reflection notwendig sein, aber eine strategische Planung der Verwendung eines generischen Typs kann dessen Wiederverwendung minimieren. Durch die sorgfältige Auswahl des Reflexionszeitpunkts können Sie sicherstellen, dass Typparameter nur einmal dynamisch angegeben werden, sodass nachgelagerter Code sie nahtlos verwenden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich generische Typargumente in generischen C#-Methoden dynamisch angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage