/// <summary> /// Builds the type name. /// </summary> private static StringBuilder BuildTypeName(TypeNameParser typeName, StringBuilder sb, Func <TypeNameParser, string> typeNameFunc) { sb.Append(typeNameFunc(typeName)); var generics = typeName.Generics; if (generics != null && generics.Count > 0) // Generics are non-null but empty when unbound. { sb.Append('['); var first = true; foreach (var genArg in generics) { if (first) { first = false; } else { sb.Append(','); } sb.Append('['); BuildTypeName(genArg, sb, typeNameFunc); sb.Append(']'); } sb.Append(']'); } sb.Append(typeName.GetArray()); return(sb); }