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);