Heim > Backend-Entwicklung > C++ > Wie kann ich zur Laufzeit zuverlässig auf generische Typen in C# testen?

Wie kann ich zur Laufzeit zuverlässig auf generische Typen in C# testen?

Patricia Arquette
Freigeben: 2025-01-06 15:32:40
Original
839 Leute haben es durchsucht

How Can I Reliably Test for Generic Types in C# at Runtime?

Testen der generischen Typinferenz in C# mit Typreflexion

In C# erfordert das Zuweisen eines Werts zu einer generischen Typvariablen eine Typinferenz zur Kompilierungszeit um den tatsächlichen Typ des Werts zu bestimmen. Dies kann zu Verwirrung führen, wenn versucht wird, zur Laufzeit zu testen, ob ein Objekt von einem generischen Typ ist.

Ein gängiger Ansatz, wie im Originalcode zu sehen ist, besteht darin, den Typ des Objekts mit der Definition des generischen Typs zu vergleichen . Dies funktioniert jedoch nicht für generische Instanzen mit bestimmten Typargumenten.

Um korrekt zu testen, ob ein Objekt eine Instanz eines generischen Typs ist, können Sie die IsGenericType-Eigenschaft von System.Type verwenden:

bool isGeneric = list.GetType().IsGenericType;
Nach dem Login kopieren

Dies gibt true zurück, wenn das Objekt eine Instanz eines generischen Typs ist, unabhängig von den Typargumenten.

Wenn Sie speziell testen müssen, ob das Objekt eine Instanz ist einer generischen Liste Typ können Sie die GetGenericTypeDefinition-Methode verwenden, um die Typdefinition des Objekts mit der Definition von List zu vergleichen:

bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Nach dem Login kopieren

Dies gibt true zurück, wenn das Objekt eine Instanz von List ist. mit jedem Typargument.

Beachten Sie, dass beide Ansätze auf genaue Typäquivalenz prüfen. Wenn das Objekt von einem generischen Typ abgeleitet ist, geben diese Tests „false“ zurück.

Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit zuverlässig auf generische Typen in C# testen?. 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