Wenn ich eine Methodensignatur wie habe
public string myMethod<T>( ... )
Wie kann ich innerhalb der Methode den Namen des Typs abrufen, der als Typargument angegeben wurde? Ich würde gerne etwas Ähnliches machen typeof(T).FullName
, aber das funktioniert tatsächlich ...
typeof(T).FullName
sollte funktionieren. Was passiert stattdessen?Antworten:
Ihr Code sollte funktionieren.
typeof(T).FullName
ist vollkommen gültig. Dies ist ein vollständig kompiliertes, funktionierendes Programm:Ausführen der obigen Ausdrucke (wie erwartet):
quelle
<int?>
" Wenn ja, funktioniert es, aber du bekommstSystem.Nullable<int>
(in voller Namenssyntax), was du erwarten würdest ...nameof(T)
undtypeof(T).Name
dasselbe tun würde. Es stellt sich heraus,nameof(T)
gerade zurückT
.typeof(T).Name
undtypeof(T).FullName
arbeiten für mich. Ich bekomme den Typ als Argument übergeben.quelle
Angenommen, Sie haben eine Instanz eines T zur Verfügung, ist dies nicht anders als bei jedem anderen Typ.
quelle