
Question:
I have the following code:
return "[Inserted new " + typeof(T).ToString() + "]";
But
typeof(T).ToString()
returns the full name including namespace
Is there anyway to just get the class name (without any namespace qualifiers?)
Solution:1
typeof(T).Name // class name, no namespace typeof(T).FullName // namespace and class name typeof(T).Namespace // namespace, no class name
Solution:2
Try this to get type parameters for generic types:
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(); }
Maybe not the best solution (due to the recursion), but it works. Outputs look like:
Dictionary<String, Object>
Solution:3
make use of (Type Properties)
Name Gets the name of the current member. (Inherited from MemberInfo.) Example : typeof(T).Name;
Solution:4
typeof(T).Name;
Solution:5
After the C# 6.0 (including) you can use nameof expression:
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â
Note! nameof
not get the underlying object's runtime Type, it is just the compile-time argument. If a method accepts an IEnumerable then nameof simply returns "IEnumerable", whereas the actual object could be "List".
Solution:6
best way to use:
obj.GetType().BaseType.Name
Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
EmoticonEmoticon