una sirve que programacion para nombres instanciar espacio ejemplos comandos codigos clases clase biblioteca aprender c# namespaces typeof

sirve - instanciar una clase c#



Obtenga el nombre del tipo sin el espacio de nombres completo en C# (6)

Tengo el siguiente código:

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

Pero

typeof(T).ToString()

devuelve el nombre completo incluyendo el espacio de nombres

¿Hay alguna forma de obtener el nombre de la clase (sin ningún calificador de espacio de nombres?)


Después de la C # 6.0 (incluida) puede usar nameof expresión:

using Stuff = Some.Cool.Functionality class C { static int Method1 (string x, int y) {} static int Method1 (string x, string y) {} int Method2 (int z) {} string f<T>() => 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 compiler error nameof(Stuff) = "Stuff" nameof(T) -> "T" // works inside of method but not in attributes on the method nameof(f) -> “f” nameof(f<T>) -> syntax error nameof(f<>) -> syntax error nameof(Method2()) -> error “This expression does not have a name”


Intenta esto para obtener parámetros de tipo para tipos genéricos:

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

Tal vez no sea la mejor solución (debido a la recursión), pero funciona. Las salidas se ven como:

Dictionary<String, Object>


hacer uso de ( Tipo Propiedades )

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


mejor manera de usar:

obj.GetType().BaseType.Name


typeof (T) .Nombre;


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