/** * Constructs an ExecutionCondition that knows how to run a ModelCondition. * * @param modelTask * the ModelCondition to run. * @param executor * the BTExecutor that will manage this ExecutionCondition. * @param parent * the parent ExecutionTask of this task. */ protected ExecutionCondition(ModelCondition modelTask, BTExecutor executor, ExecutionTask parent) : base(modelTask, executor, parent) { }
public static string GenerateModelCode(ModelCondition modelCondition) { return(ModelObjectCodeUtil.GenerateModelCode(modelCondition)); }
public static string GenerateModelCode(ModelCondition modelCondition) { try { if (modelCondition == null || string.IsNullOrWhiteSpace(modelCondition.Text)) { return string.Empty; } StringBuilder sb = new StringBuilder(); bool isAddClass = false; // 0. 将文本分割成多行 var lines = modelCondition.Text.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // 1. 查看第一行是否带有类的信息 isAddClass = IsClass(lines[0], out string clazzName, out string clazzComment); if (isAddClass) { if (modelCondition.AddApiModelPropertyAttribute) { sb.AppendLine($"@ApiModel(\"{clazzComment}\")"); } sb.AppendLine("@Data"); sb.AppendLine($"public class {clazzName}" + '{'); } // 2. 分析每一行 获取 所得列表 int startIndex = isAddClass ? 1 : 0; // 如果是带了类信息,那么第一行描述的是类的信息,从第二行开始描述的才是filed信息 for (int i = startIndex; i < lines.Length; i++) { string line = lines[i]; if (GetField(line, out string fieldName, out string typeName, out string comment)) { sb.AppendLine(); // 添加一个空行 string fieldCode = $"\tprivate {typeName} {fieldName}; // {comment}"; if (modelCondition.AddApiModelPropertyAttribute) { string apiComment = $"\t@ApiModelProperty(\"{comment}\")"; sb.AppendLine(apiComment); } sb.AppendLine(fieldCode); } } // 3. 添加括号 返回代码 if (isAddClass) { sb.AppendLine("}"); } return sb.ToString(); } catch (Exception e) { Console.WriteLine(e); } return string.Empty; }