J'ai le code suivant:
return "[Inserted new " + typeof(T).ToString() + "]";
Mais
typeof(T).ToString()
renvoie le nom complet, y compris l'espace de noms
Existe-t-il de toute façon juste pour obtenir le nom de classe (sans aucun qualificatif d'espace de noms?)
c#
namespaces
typeof
leora
la source
la source
string1 + anything.ToString() + string2
est redondante.ToString
Si vous le faites, le compilateur insère l'appel à automatiquementstring1 + anything + string2
.Type
instance (telles que retournées partypeof(..)
), je suis sûr que vous le découvririez vous-même ...Réponses:
la source
Name
ne prend pas en compte les paramètres de type.this.GetType().Name
,this.GetType().FullName
etc. s'il s'agit d'instances.Name
ne prend pas non plus en compte les types imbriqués!Essayez ceci pour obtenir les paramètres de type pour les types génériques:
Ce n'est peut-être pas la meilleure solution (en raison de la récursivité), mais cela fonctionne. Les sorties ressemblent à:
la source
StringBuilder
dans chaque appel récursif (même le cas de base lorsqu'il n'est pas utilisé), mais ignore lesstring.Join
lambda temporaires et LINQ. Utilisez-leString
jusqu'à ce que vous sachiez qu'il s'agit d'un goulot d'étranglement. / rantutiliser ( Propriétés du type )
la source
typeof (T) .Name;
la source
Après le C # 6.0 (y compris), vous pouvez utiliser l' expression nameof :
Remarque!
nameof
ne récupère pas le type d'exécution de l'objet sous-jacent, il s'agit simplement de l'argument de compilation. Si une méthode accepte un IEnumerable, nameof renvoie simplement "IEnumerable", alors que l'objet réel pourrait être "List".la source
nameof
ne renvoie pas le nom duType
nameof
renvoyé le nom duType
, capture d'écran avec preuve: prntscr.com/irfk2cType
, c'est juste l'argument de compilation. Si une méthode accepte un,IEnumerable
ellenameof
renvoie simplement "IEnumerable", alors que l'objet réel peut être "List <string>". Il ne pense pas que cela réponde à la question du PO.meilleure façon d'utiliser:
la source
obj.GetType().BaseType.Name
revient,"TypeInfo"
ce qui n'est pas la solution recherchée comme je l'attends.