Die Dokumentation der Exemplareigenschaft Type.IsConstructedGenericType
ist unklar oder irreführend .
Ich habe den folgenden Code ausprobiert, um das tatsächliche Verhalten dieser und verwandter Eigenschaften zu finden:
%Vor% Der Code läuft durch ein kartesisches Produkt, das aus 36 Typen t
besteht.
Ergebnisse: Für 32 Typen (alle außer den 4 Kombinationen Dictionary<int, int>
, Dictionary<int, string>
, Dictionary<string, int>
, Dictionary<string, string>
) war der Wert von ContainsGenericParameters
wahr.
Bei 35 Typen war IsGenericTypeDefinition
falsch, während IsConstructedGenericType
wahr war. Für den letzten Typ, nämlich (nicht überraschend):
Die IsGenericTypeDefinition
war wahr und IsConstructedGenericType
war falsch.
Kann ich daraus schließen, dass für einen generischen Typ der Wert von IsConstructedGenericType
immer das Gegenteil (Negation) von IsGenericTypeDefinition
?
(Die Dokumentation scheint zu behaupten, dass IsConstructedGenericType
stattdessen das Gegenteil von ContainsGenericParameters
ist, aber wir haben deutlich eine Menge Gegenbeispiele dazu gezeigt.)
Ja, das ist richtig. Unter der Annahme, dass der Type
ein generischer Typ ist, ist genau einer von IsGenericTypeDefinition
oder IsConstructedGenericType
wahr. Wir können leicht von der Referenzquelle für RuntimeType
(was die konkrete Implementierung von Type
ist, wenn Sie das tun) GetType()
oder typeof
) warum das der Fall ist:
Tags und Links .net c# reflection generics types