Posted in
There is a C# Class, Type, which can be used to get details about other classes.
Problem: Type.Name does not return friendly names for generic types.
So I wrote an extension method, which returns the friendly name for any Type.
Type t = typeof(string); Debug.WriteLine(t.Name);This prints out "String". When you get the value of the property Name when t is assigned to a generic type...
Type t = typeof(List<string>); Debug.WriteLine(t.Name);
This prints out "List`1`".
Problem: Type.Name does not return friendly names for generic types.
So I wrote an extension method, which returns the friendly name for any Type.
public static string GetFriendlyName(this Type type) { if (type.IsGenericType) { StringBuilder sb = new StringBuilder(); sb.Append(type.Name.Remove(type.Name.IndexOf('`'))); sb.Append("<"); Type[] arguments = type.GetGenericArguments(); for(int i = 0; i < arguments.Length; i++) { sb.Append(arguments[i].GetFriendlyName()); if (i + 1 < arguments.Length) { sb.Append(", "); } } sb.Append(">"); return sb.ToString(); } else { return type.Name; } }
It's used like this:
Type t = typeof(List<String>); Debug.WriteLine(t.GetFriendlyName());This prints out "List<String>"