Beispiel #1
0
        public override void GenerateFiles()
        {
            //获取枚举类模板内容
            string templateContent = Tools.ReadFileContent(Configs.EnumTemplatePath);

            //枚举总数
            int enumCount = DataQueue.Count();

            Console.WriteLine($"共有{enumCount}个枚举类文件待生成:");

            //处理数据表转换队列
            while (DataQueue.Count() > 0)
            {
                var enumDesc = (EnumDesc)DataQueue.Dequeue();

                Console.WriteLine($"正在生成【枚举类】{enumDesc.Description}({enumDesc.Name})……{enumCount - DataQueue.Count()}/{enumCount}");

                //枚举类解析对象上下文
                EnumClassResolveContext context = new EnumClassResolveContext(templateContent, enumDesc);

                //解析器集合
                List <EnumClassExpression> exps = new List <EnumClassExpression>();
                exps.Add(new EnumModuleNameExpression());               //模块名称文法解释器
                exps.Add(new EnumNameExpression());                     //实体名称文法解释器
                exps.Add(new EnumDescriptionExpression());              //实体类描述文法解释器
                exps.Add(new ForeachOptionsExpression());               //实体属性循环处理文法解释器

                //循环执行解析
                foreach (var exp in exps)
                {
                    exp.Interpret(context);
                }

                //存储的最终文件路径
                string filePath = $@"{OutputDirectory}\{context.EnumDesc.Module}\{context.EnumDesc.Name}.cs";

                //写入文件并保存
                SaveFile(filePath, context.OutputEnumClassContent);
            }
        }
 /// <summary>
 /// 执行文法解释
 /// </summary>
 /// <param name="context"></param>
 public abstract void Interpret(EnumClassResolveContext context);