private static string GetTypeName(ITypeInfoProvider type) { try { var sb = new StringBuilder(); var name = type.Name ?? type.FullName; if (type.IsGenericType) { int lastIndexOf = name.LastIndexOf('`'); if (lastIndexOf != -1) { name = name.Substring(0, lastIndexOf); } } sb.Append(name); if (type.IsGenericType || type.IsGenericTypeDefinition) { sb.Append("<"); sb.Append(string.Join(", ", type.GetGenericArguments().Select(a => GetTypeName(a)))); sb.Append(">"); } return(Normalizer.Normalize(sb.ToString())); } catch { Console.WriteLine("Exception stringifying type. Type details: \r\n" + type); throw; } }