public static string GetDisplayName(Type type, bool fullName) { if (type == null) { return(string.Empty); } if (type.IsGenericParameter) { return(type.Name); } if (!type.IsGenericType && !type.IsArray) { return(fullName ? type.FullName : type.Name); } // replace `2 with <type1, type2=""> var regex = new Regex("`[0-9]+"); var evaluator = new GenericsMatchEvaluator(type.GetGenericArguments(), fullName); // Remove [[fullName1, ..., fullNameX]] var name = fullName ? type.FullName : type.Name; var start = name.IndexOf("[[", StringComparison.Ordinal); var end = name.LastIndexOf("]]", StringComparison.Ordinal); if (start > 0 && end > 0) { name = name.Substring(0, start) + name.Substring(end + 2); } return(regex.Replace(name, evaluator.Evaluate)); }
public static string GetDisplayName(Type type, bool fullName) { if (type == null) { return string.Empty; } if (type.IsGenericParameter) { return type.Name; } if (!type.IsGenericType && !type.IsArray) { return fullName ? type.FullName : type.Name; } // replace `2 with <type1, type2=""> var regex = new Regex("`[0-9]+"); var evaluator = new GenericsMatchEvaluator(type.GetGenericArguments(), fullName); // Remove [[fullName1, ..., fullNameX]] var name = fullName ? type.FullName : type.Name; var start = name.IndexOf("[[", StringComparison.Ordinal); var end = name.LastIndexOf("]]", StringComparison.Ordinal); if (start > 0 && end > 0) { name = name.Substring(0, start) + name.Substring(end + 2); } return regex.Replace(name, evaluator.Evaluate); }
public static string GetDisplayName(this Type type, bool fullName) { if (type == null) { return(string.Empty); } if (type.IsGenericParameter) { return(type.Name); } if (!type.IsGenericType && !type.IsArray) { return(fullName ? type.FullName : type.Name); } string anonymousTypeName = GetAnonymousTypeName(type); // replace `2 with <type1, type2=""> Regex regex = new Regex("`[0-9]+"); GenericsMatchEvaluator evaluator = new GenericsMatchEvaluator(type.GetGenericArguments(), fullName); // Remove [[fullName1, ..., fullNameX]] string name = fullName ? type.FullName : type.Name; int start = name.IndexOf("[[", StringComparison.Ordinal); int end = name.LastIndexOf("]]", StringComparison.Ordinal); if (start > 0 && end > 0) { name = name.Substring(0, start) + name.Substring(end + 2); } string retName = regex.Replace(name, evaluator.Evaluate); return(anonymousTypeName.Length != 0 ? retName.Replace(anonymousTypeName, "AnonymousType") : retName); }