internal static string ToString(Type type, TypeNameBuilder.Format format) { if ((format == TypeNameBuilder.Format.FullName || format == TypeNameBuilder.Format.AssemblyQualifiedName) && !type.IsGenericTypeDefinition && type.ContainsGenericParameters) { return(null); } TypeNameBuilder typeNameBuilder = new TypeNameBuilder(TypeNameBuilder.CreateTypeNameBuilder()); typeNameBuilder.Clear(); typeNameBuilder.ConstructAssemblyQualifiedNameWorker(type, format); string result = typeNameBuilder.ToString(); typeNameBuilder.Dispose(); return(result); }
private void ConstructAssemblyQualifiedNameWorker(Type type, TypeNameBuilder.Format format) { Type type2 = type; while (type2.HasElementType) { type2 = type2.GetElementType(); } List <Type> list = new List <Type>(); Type type3 = type2; while (type3 != null) { list.Add(type3); type3 = (type3.IsGenericParameter ? null : type3.DeclaringType); } for (int i = list.Count - 1; i >= 0; i--) { Type type4 = list[i]; string text = type4.Name; if (i == list.Count - 1 && type4.Namespace != null && type4.Namespace.Length != 0) { text = type4.Namespace + "." + text; } this.AddName(text); } if (type2.IsGenericType && (!type2.IsGenericTypeDefinition || format == TypeNameBuilder.Format.ToString)) { Type[] genericArguments = type2.GetGenericArguments(); this.OpenGenericArguments(); for (int j = 0; j < genericArguments.Length; j++) { TypeNameBuilder.Format format2 = (format == TypeNameBuilder.Format.FullName) ? TypeNameBuilder.Format.AssemblyQualifiedName : format; this.OpenGenericArgument(); this.ConstructAssemblyQualifiedNameWorker(genericArguments[j], format2); this.CloseGenericArgument(); } this.CloseGenericArguments(); } this.AddElementType(type); if (format == TypeNameBuilder.Format.AssemblyQualifiedName) { this.AddAssemblySpec(type.Module.Assembly.FullName); } }
internal static string ToString(Type type, TypeNameBuilder.Format format) { if ((format == TypeNameBuilder.Format.FullName || format == TypeNameBuilder.Format.AssemblyQualifiedName) && (!type.IsGenericTypeDefinition && type.ContainsGenericParameters)) { return((string)null); } TypeNameBuilder typeNameBuilder = new TypeNameBuilder(TypeNameBuilder.CreateTypeNameBuilder()); typeNameBuilder.Clear(); Type type1 = type; int num = (int)format; typeNameBuilder.ConstructAssemblyQualifiedNameWorker(type1, (TypeNameBuilder.Format)num); string @string = typeNameBuilder.ToString(); typeNameBuilder.Dispose(); return(@string); }
private void ConstructAssemblyQualifiedNameWorker(Type type, TypeNameBuilder.Format format) { Type type1 = type; while (type1.HasElementType) { type1 = type1.GetElementType(); } List <Type> typeList = new List <Type>(); for (Type type2 = type1; type2 != (Type)null; type2 = type2.IsGenericParameter ? (Type)null : type2.DeclaringType) { typeList.Add(type2); } for (int index = typeList.Count - 1; index >= 0; --index) { Type type2 = typeList[index]; string name = type2.Name; if (index == typeList.Count - 1 && type2.Namespace != null && type2.Namespace.Length != 0) { name = type2.Namespace + "." + name; } this.AddName(name); } if (type1.IsGenericType && (!type1.IsGenericTypeDefinition || format == TypeNameBuilder.Format.ToString)) { Type[] genericArguments = type1.GetGenericArguments(); this.OpenGenericArguments(); for (int index = 0; index < genericArguments.Length; ++index) { TypeNameBuilder.Format format1 = format == TypeNameBuilder.Format.FullName ? TypeNameBuilder.Format.AssemblyQualifiedName : format; this.OpenGenericArgument(); this.ConstructAssemblyQualifiedNameWorker(genericArguments[index], format1); this.CloseGenericArgument(); } this.CloseGenericArguments(); } this.AddElementType(type); if (format != TypeNameBuilder.Format.AssemblyQualifiedName) { return; } this.AddAssemblySpec(type.Module.Assembly.FullName); }