diff --git a/reflect/TypeNameParser.cs b/reflect/TypeNameParser.cs index 9e5e6289..22ff76c0 100644 --- a/reflect/TypeNameParser.cs +++ b/reflect/TypeNameParser.cs @@ -122,17 +122,27 @@ namespace IKVM.Reflection for (int pos = 0; pos < name.Length; pos++) { char c = name[pos]; - if (SpecialChars.IndexOf(c) != -1) + switch (c) { - if (sb == null) - { - sb = new StringBuilder(name, 0, pos, name.Length + 3); - } - sb.Append('\\').Append(c); - } - else if (sb != null) - { - sb.Append(c); + case '\\': + case '+': + case ',': + case '[': + case ']': + case '*': + case '&': + if (sb == null) + { + sb = new StringBuilder(name, 0, pos, name.Length + 3); + } + sb.Append("\\").Append(c); + break; + default: + if (sb != null) + { + sb.Append(c); + } + break; } } return sb != null ? sb.ToString() : name;