예제 #1
0
            public static Metadata.DB_Type GetType(Metadata.Expression.TypeSyntax typeSyntax, Metadata.Model model)
            {
                if (typeSyntax.isGenericType)
                {
                    Metadata.DB_Type ma = GetType(typeSyntax.GetTypeDefinitionFullName());
                    return(Metadata.DB_Type.MakeGenericType(ma, typeSyntax.args, new Metadata.Model(new Finder())));
                }

                if (typeSyntax.isGenericParameter)
                {
                    //return Metadata.DB_Type.MakeGenericParameterType(GetType(typeSyntax), new Metadata.GenericParameterDefinition() { type_name = gps.Name });
                    return(model.GetIndifierInfo(typeSyntax.Name).type);
                }

                return(GetType(typeSyntax.GetTypeDefinitionFullName()));
            }
예제 #2
0
            //查找一个类型,如果是动态类型,构造一个
            public Metadata.DB_Type FindType(Metadata.Expression.TypeSyntax refType, Metadata.Model model)
            {
                if (refType.IsVoid)
                {
                    return(null);
                }
                Metadata.DB_Type type = Model.GetType(refType, model);
                if (type == null)
                {
                    type = Metadata.DB.LoadType(path, refType.GetTypeDefinitionFullName());
                    Model.types.Add(refType.GetTypeDefinitionFullName(), type);
                    return(Model.GetType(refType, model));;
                }

                return(type);
            }
예제 #3
0
        static HashSet <string> GetTypeList(Metadata.Expression.TypeSyntax type)
        {
            HashSet <string> set = new HashSet <string>();

            set.Add(type.GetTypeDefinitionFullName());
            if (type.isGenericType)
            {
                foreach (var p in type.args)
                {
                    if (p.isGenericParameter || p.IsVoid)
                    {
                        continue;
                    }
                    foreach (var l in GetTypeList(p))
                    {
                        set.Add(l);
                    }
                }
            }

            return(set);
        }
예제 #4
0
 //查找一个类型,如果是动态类型,构造一个
 public Metadata.DB_Type FindType(Metadata.Expression.TypeSyntax refType, Metadata.Model model)
 {
     return(Model.GetType(refType, model));
 }