示例#1
0
        public ArrayTypeName(FlyweightFactory factory, Type type)
        {
            var t     = type;
            var ranks = string.Empty;

            do
            {
                int rank;
                switch (rank = t.GetArrayRank())
                {
                case 1:
                    ranks += "[]";
                    break;

                case 2:
                    ranks += "[,]";
                    break;

                case 3:
                    ranks += "[,,]";
                    break;

                default:
                    ranks += ("[" + new string(',', rank - 1) + "]");
                    break;
                }
            } while ((t = t.GetElementType()).IsArray);
            ElementTypeName = factory.GetTypeName(t);
            Ranks           = ranks;
            TypeFullName    = type.FullName;
        }
示例#2
0
        public ParameterizedTypeName(FlyweightFactory factory, TypeInfo typeInfo)
        {
            Parent   = factory.GetNamespaceName(typeInfo.Namespace);
            CoreName = GetCoreName(typeInfo.Name);

            GenericTypeArgumentNames = factory.GetTypeNames(typeInfo.GenericTypeParameters);

            TypeFullName = typeInfo.FullName;
        }
示例#3
0
        public ParameterizedTypeName(FlyweightFactory factory, Type type)
        {
            Parent   = factory.GetNamespaceName(type.Namespace);
            CoreName = GetCoreName(type.Name);

            GenericTypeArgumentNames = factory.GetTypeNames(type.GenericTypeArguments);

            IsConstructed = true;

            TypeFullName = type.FullName;
        }
示例#4
0
        public ParameterizedTypeName(FlyweightFactory factory, TypeName parentTypeName, TypeInfo typeInfo)
        {
            Parent   = parentTypeName;
            CoreName = GetCoreName(typeInfo.Name);

            var parameterized = parentTypeName as ParameterizedTypeName;

            if (parameterized != null)
            {
                GenericTypeArgumentNames = factory.GetTypeNames(typeInfo.GenericTypeParameters, parameterized.GenericTypeArgumentNames.Length);
            }
            else
            {
                GenericTypeArgumentNames = factory.GetTypeNames(typeInfo.GenericTypeParameters);
            }

            TypeFullName = typeInfo.FullName;
        }
示例#5
0
        public ParameterizedTypeName(FlyweightFactory factory, TypeName parentTypeName, Type type)
        {
            Parent   = parentTypeName;
            CoreName = GetCoreName(type.Name);

            var parameterized = parentTypeName as ParameterizedTypeName;

            if (parameterized != null)
            {
                GenericTypeArgumentNames = factory.GetTypeNames(type.GenericTypeArguments, parameterized.GenericTypeArgumentNames.Length);
            }
            else
            {
                GenericTypeArgumentNames = factory.GetTypeNames(type.GenericTypeArguments);
            }

            IsConstructed = true;

            TypeFullName = type.FullName;
        }
示例#6
0
 public PointerTypeName(FlyweightFactory factory, Type type)
 {
     ElementTypeName = factory.GetTypeName(type.GetElementType());
     TypeFullName    = type.FullName;
 }
示例#7
0
 public NonParameterizedTypeName(FlyweightFactory factory, TypeName declaringTypeName, Type type)
 {
     Parent       = declaringTypeName;
     Name         = type.Name;
     TypeFullName = type.FullName;
 }
示例#8
0
 public NonParameterizedTypeName(FlyweightFactory factory, Type type)
 {
     Parent       = factory.GetNamespaceName(type.Namespace);
     Name         = type.Name;
     TypeFullName = type.FullName;
 }
示例#9
0
 public NullableTypeName(FlyweightFactory factory, Type type)
 {
     UnderlyingTypeName = factory.GetTypeName(Nullable.GetUnderlyingType(type));
     _System            = factory.GetNamespaceName(nameof(System));
     TypeFullName       = type.FullName;
 }