Récupère le nom du type sans espace de noms complet en C #

J’ai le code suivant:

return "[Inserted new " + typeof(T).ToSsortingng() + "]"; 

Mais

  typeof(T).ToSsortingng() 

renvoie le nom complet, y compris l’espace de noms

Y a-t-il un moyen de simplement obtenir le nom de la classe (sans qualificatifs pour les espaces de noms?)

 typeof(T).Name // class name, no namespace typeof(T).FullName // namespace and class name typeof(T).Namespace // namespace, no class name 

Essayez ceci pour obtenir des parameters de type pour les types génériques:

 public static ssortingng CSharpName(this Type type) { var sb = new SsortingngBuilder(); var name = type.Name; if (!type.IsGenericType) return name; sb.Append(name.Subssortingng(0, name.IndexOf('`'))); sb.Append("< "); sb.Append(string.Join(", ", type.GetGenericArguments() .Select(t => t.CSharpName()))); sb.Append(">"); return sb.ToSsortingng(); } 

Peut-être pas la meilleure solution (à cause de la récursivité), mais ça marche. Les sorties ressemblent à:

 Dictionary 

utiliser ( Propriétés du type )

  Name Gets the name of the current member. (Inherited from MemberInfo.) Example : typeof(T).Name; 

typeof (T) .Name;

Après le C # 6.0 (inclus), vous pouvez utiliser nameof expression:

 using Stuff = Some.Cool.Functionality class C { static int Method1 (ssortingng x, int y) {} static int Method1 (ssortingng x, ssortingng y) {} int Method2 (int z) {} ssortingng f() => nameof(T); } var c = new C() nameof(C) -> "C" nameof(C.Method1) -> "Method1" nameof(C.Method2) -> "Method2" nameof(c.Method1) -> "Method1" nameof(c.Method2) -> "Method2" nameof(z) -> "z" // inside of Method2 ok, inside Method1 is a comstackr error nameof(Stuff) = "Stuff" nameof(T) -> "T" // works inside of method but not in atsortingbutes on the method nameof(f) -> “f” nameof(f) -> syntax error nameof(f<>) -> syntax error nameof(Method2()) -> error “This expression does not have a name” 

meilleure façon d’utiliser:

 obj.GetType().BaseType.Name