/// <summary> /// Gets the enclosing character. /// </summary> /// <param name="start">if set to <c>true</c> [start].</param> /// <param name="genericChar">The generic character.</param> /// <returns></returns> private static char GetEnclosingChar(bool start, EnclosingGenericChar genericChar) { switch (genericChar) { case EnclosingGenericChar.Brackets: return(start ? '[' : ']'); case EnclosingGenericChar.MathSigns: return(start ? '<' : '>'); } return(default);
/// <summary> /// Gets the name of the friendly type. /// </summary> /// <param name="t">The t.</param> /// <param name="genericChar">The generic character.</param> /// <returns></returns> public static string GetFriendlyTypeName(this Type t, EnclosingGenericChar genericChar = EnclosingGenericChar.Brackets) { var typeName = t.Name.StripStartingWith("`"); var genericArgs = t.GetGenericArguments(); if (genericArgs.Length > 0) { typeName += GetEnclosingChar(true, genericChar); foreach (var genericArg in genericArgs) { typeName += genericArg.GetFriendlyTypeName(genericChar) + ", "; } typeName = typeName.TrimEnd(',', ' ') + GetEnclosingChar(false, genericChar); } return(typeName); }
/// <summary> /// Gets the name of the friendly type. /// </summary> /// <param name="t">The t.</param> /// <param name="fullName">if set to <c>true</c> [full name].</param> /// <param name="genericChar">The generic character.</param> /// <returns></returns> public static string GetFriendlyTypeName(this Type t, bool fullName = true, EnclosingGenericChar genericChar = EnclosingGenericChar.Brackets) { return(t.IsGenericType ? t.Namespace + "." + t.GetFriendlyTypeName(genericChar) : t.FullName); }