Wie vergleicht man den Objekttyp mit einem generischen Typ, der für ein generisches Argument irrelevant ist?

8

Der beste Weg, meine Frage zu illustrieren, ist mit diesem Beispielcode:

%Vor%

Die folgende Zeile funktioniert nicht:

%Vor%

Ist es eine Möglichkeit, es zum Laufen zu bringen, ohne Container<> in Container<int> explizit zu ändern? Ich möchte wissen, dass das Objekt vom 'Behälter' Typ ist und ich wirklich kein Interesse habe, ist es Container<int> oder Container<string> . Irgendwelche Hinweise anders als Dutzende Zeilen der Reflexion?

    
grigoryvp 06.12.2009, 12:15
quelle

1 Antwort

23

Versuchen Sie:

%Vor%

Beachten Sie, dass dies nur wahr zurückgibt, wenn der tatsächliche Typ Container<T> ist. Es funktioniert nicht für abgeleitete Typen. Zum Beispiel gibt es false für Folgendes zurück:

%Vor%

Wenn Sie es für diesen Fall arbeiten lassen müssen, sollten Sie die Vererbungshierarchie durchlaufen und jede Basisklasse als Container<T> testen:

%Vor%     
Mehrdad Afshari 06.12.2009, 12:18
quelle

Tags und Links