/// <summary> /// 代码生成 /// </summary> /// <param name="target">生成目标</param> /// <param name="tmpFiles">模板文件</param> /// <param name="tableNodeList">表集合</param> private void GenerateCode(CodeGenTarget target, string[] tmpFiles, List <TreeNode> tableNodeList) { switch (target) { case CodeGenTarget.File: break; case CodeGenTarget.Directories: break; default: break; } if (tmpFiles.Length == 0) { MessageBox.Show("请选择模板"); return; } tableNodeList.ForEach(node => { var serversNode = node.Parent.Parent.Parent; var serversNodeTag = (TreeNodeTag)serversNode.Tag; var servers = (Servers)serversNodeTag.Tag; var dataBaseName = node.Parent.Parent.Text; var tableName = node.Text; //生成文件代码 for (int j = 0; j < tmpFiles.Length; j++) { var arr = Path.GetFileNameWithoutExtension(tmpFiles[j]).Split('_'); var fileType = arr.Length < 2 ? "cs" : arr[1];//文件类型 var codeType = CommonHelper.GetCodeTypeName(fileType); var fields = new BLL_Database(servers.Type).GetFields(servers.Id, dataBaseName, tableName); var result = RazorEngineExtension.Parse <RazorPageModel>(tmpFiles[j], new RazorPageModel { TableName = tableName, Fields = fields }); switch (target) { case CodeGenTarget.Directories: string fileName = arr[0].ToUpper() + "_" + tableName + "." + fileType; string filePath = Path.Combine(AppGlobalConfig.Intance.Config.FileSaveDirectory, fileName); filePath.WriteAllText(result); break; default: var formCode = new Form_Code(tableName + "_" + arr[0], result, codeType); formCode.Show(Form_Main.Instance.dockPanel); break; } } }); }
/// <summary> /// Create a new instance of EntityGenerator implementation. /// </summary> /// <param name="target">Target for which to generate code.</param> /// <param name="syncObjectSchema">Schema under which the sync related objects are created in the SQL database. /// This can be null when generating non-server code.</param> /// <returns></returns> public static EntityGenerator Create(CodeGenTarget target, string syncObjectSchema) { switch (target) { case CodeGenTarget.Server: default: return new ServiceEntityGenerator(syncObjectSchema); case CodeGenTarget.ISClient: return new IsolatedStoreClientEntityGenerator(); case CodeGenTarget.Client: return new GenericClientEntityGenerator(); } }
/// <summary> /// 生成选择 /// </summary> /// <param name="target"></param> public void BuilderSelect(CodeGenTarget target) { List <TreeNode> selNodeList = new List <TreeNode>(); switch (target) { case CodeGenTarget.File: var selNode = treeViewLeft.SelectedNode; var treeNodeTag = (TreeNodeTag)selNode.Tag; if (treeNodeTag.Type == TreeNodeType.Table) { selNodeList = new List <TreeNode> { selNode }; } break; case CodeGenTarget.Directories: selNodeList = GetTreeNodeSelectedList(); break; default: break; } if (!selNodeList.Any()) { ShowBox("请选择数据表"); return; } new Form_BuilderSelect((form, files) => { GenerateCode(target, files, selNodeList); form.Close(); }).ShowDialog(); }
/// <inheritdoc/> public void RegisterTarget(CodeGenTarget target, TargetRegistrations registrations = TargetRegistrations.All) { switch (target) { case CodeGenTarget.Native: RegisterNative(registrations); break; case CodeGenTarget.AArch64: RegisterAArch64(registrations); break; case CodeGenTarget.AMDGPU: RegisterAMDGPU(registrations); break; case CodeGenTarget.ARM: RegisterARM(registrations); break; case CodeGenTarget.BPF: RegisterBPF(registrations); break; case CodeGenTarget.Hexagon: RegisterHexagon(registrations); break; case CodeGenTarget.Lanai: RegisterLanai(registrations); break; case CodeGenTarget.MIPS: RegisterMips(registrations); break; case CodeGenTarget.MSP430: RegisterMSP430(registrations); break; case CodeGenTarget.NvidiaPTX: RegisterNVPTX(registrations); break; case CodeGenTarget.PowerPC: RegisterPowerPC(registrations); break; case CodeGenTarget.Sparc: RegisterSparc(registrations); break; case CodeGenTarget.SystemZ: RegisterSystemZ(registrations); break; case CodeGenTarget.WebAssembly: RegisterWebAssembly(registrations); break; case CodeGenTarget.X86: RegisterX86(registrations); break; case CodeGenTarget.XCore: RegisterXCore(registrations); break; case CodeGenTarget.RISCV: RegisterRISCV(registrations); break; case CodeGenTarget.All: RegisterAll(registrations); break; } }