Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }