using System.Text; namespace etoy { /// /// 客户端配置表加载代码 /// class CSharpTableLoaderGenerater : IGenerater { const string TableRepoLoadArea = "<#TableRepoLoadArea>"; public void Generate(Context context) { var path = context.Option.ClientDatabaseLoadCodePath; if (string.IsNullOrEmpty(path)) { return; } var fileName = Path.GetFileName(path); var templatePath = Path.Combine(Environment.CurrentDirectory, "Configs/CSTemplates", fileName); if (!File.Exists(templatePath)) { return; } // 删除旧文件 if (File.Exists(path)) { File.Delete(path); } var sbTableRepoLoadArea = new StringBuilder(); var tables = context.Blackboard.Tables; foreach (var table in tables) { if (table.TableTag.HasFlag(TableTag.Client)) { sbTableRepoLoadArea.AppendLine($" {table.Name}TableRepo.LoadAsync().Join(group);"); } } var templateText = File.ReadAllText(templatePath); templateText = templateText.Replace(TableRepoLoadArea, sbTableRepoLoadArea.ToString()); File.WriteAllText(path, templateText, Encoding.UTF8); } } }