string format_name (bool full_name, bool assembly_qualified)
{
StringBuilder sb = new StringBuilder (generic_type.FullName);
bool compiler_ctx = IsCompilerContext;
sb.Append ("[");
for (int i = 0; i < type_arguments.Length; ++i) {
if (i > 0)
sb.Append (",");
string name;
if (full_name) {
string assemblyName = type_arguments [i].Assembly.FullName;
name = type_arguments [i].FullName;
if (name != null && assemblyName != null)
name = name + ", " + assemblyName;
} else {
name = type_arguments [i].ToString ();
}
if (name == null) {
if (compiler_ctx && type_arguments [i].IsGenericParameter)
name = type_arguments [i].Name;
else
return null;
}
if (full_name)
sb.Append ("[");
sb.Append (name);
if (full_name)
sb.Append ("]");
}
sb.Append ("]");
if (assembly_qualified) {
sb.Append (", ");
sb.Append (generic_type.Assembly.FullName);
}
return sb.ToString ();
}