private static void ToCSharpString(Type type, StringBuilder name)
{
if (type.IsArray)
{
var elementType = type.GetElementType();
ToCSharpString(elementType, name);
name.Append(type.Name.Substring(elementType.Name.Length));
return;
}
if (type.IsGenericParameter)
{
//NOTE: this has to go before type.IsNested because nested generic type is also a generic parameter and otherwise we'd have stack overflow
name.AppendFormat("·{0}·", type.Name);
return;
}
if (type.IsNested)
{
ToCSharpString(type.DeclaringType, name);
name.Append(".");
}
if (type.IsGenericType == false)
{
name.Append(type.Name);
return;
}
name.Append(type.Name.Split('`')[0]);
AppendGenericParameters(name, type.GetGenericArguments());
}