/// <summary>
        /// 生成实体类文件
        /// </summary>
        public override void GenerateFiles()
        {
            //获取Mapping类模板内容
            string templateContent = Tools.ReadFileContent(Configs.MappingTemplatePath);

            //数据表总数
            int tableCount = DataQueue.Count();

            Console.WriteLine($"共有{tableCount}个Mapping类待生成:");

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

                Console.WriteLine($"正在生成【Mapping类】{table.Description}({table.Name})……{tableCount - DataQueue.Count()}/{tableCount}");

                //Mapping类解析对象上下文
                MappingResolveContext context = new MappingResolveContext(templateContent, table);

                //解析器集合
                List <MappingExpression> exps = new List <MappingExpression>();
                exps.Add(new ModuleNameExpression());           //模块名称文法解释器
                exps.Add(new MappingNameExpression());          //Mapping名称文法解释器
                exps.Add(new TableSchemaExpression());          //Mapping类数据表架构(Schema)文法解释器
                exps.Add(new MappingHasKeysExpression());       //Mapping主键配置处理文法解释器
                exps.Add(new MappingColumnsExpression());       //Mapping字段配置处理文法解释器

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

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

                //写入文件并保存
                SaveFile(filePath, context.Output);
            }
        }
 /// <summary>
 /// 执行方法解释
 /// </summary>
 /// <param name="context"><see cref="MappingResolveContext"/>实例</param>
 public abstract void Interpret(MappingResolveContext context);