/// <summary> /// 获取属性模板替换后的结果字符串 /// </summary> /// <param name="propertyTemplate">属性模板</param> /// <param name="seprator">分隔器</param> /// <param name="columnList">属性集合</param> /// <returns></returns> private string GetTemplateReplaceAfterChars(string propertyTemplate, string seprator, List <TableColumn> columnList) { //定义一个存储实体属性的code变量 StringBuilder sb = new StringBuilder(); //解析出限制或非限制长度的属性模板 //1. 限制长度的模板 var limitTemplate = ResolverPropertyTemplate(propertyTemplate, true); //2. 非限制长度的模板 var unlimitTemplate = ResolverPropertyTemplate(propertyTemplate, false); //循环处理每个字段信息 foreach (var column in columnList) { //循环项中的模板 var template = column.TotalBit > 0 ? limitTemplate : unlimitTemplate; PropertyResolverContext context = new PropertyResolverContext(column, template); List <PropertyExpression> expList = new List <PropertyExpression>(); expList.Add(new PropertyNameExpression()); //属性名解释器 expList.Add(new PropertyDataTypeExpression()); //属性数据类型解释器 expList.Add(new PropertyLimitLengthExpression()); //属性数据长度限制解释器 expList.Add(new ProperytyDescriptionExpression()); //属性描述解释器 foreach (var exp in expList) { exp.Interpret(context); } if (sb.Length > 0) { sb.Append(seprator); } sb.Append(context.Output); } return(sb.ToString()); }
/// <summary> /// 执行文法解释 /// </summary> /// <param name="context"></param> public abstract void Interpret(PropertyResolverContext context);