namespace etoy { class CSharpCommonTableRepositoryGenerater : IGenerater { const string CLASS_TAIL = "TableRepo"; const string TABLE_CLASS = "Table"; const string RELATIVE_PATH = "Repositories"; public void Generate(Context context) { var tables = context.Blackboard.Tables; foreach (var table in tables) { if (table.TableTag.HasFlag(TableTag.Client)) GenSingle(context, table); } } void GenSingle(Context context, Table table) { string csharpTypeName = table.Name + CLASS_TAIL; var tableClassName = table.Name + TABLE_CLASS; string fileName = $"{csharpTypeName}.cs"; string directory = Path.Combine(context.Option.ClientCodeOutput, RELATIVE_PATH).ToPath(); if (!Directory.Exists(directory)) Directory.CreateDirectory(directory); string path = Path.Combine(directory, fileName); using CodeWriter writer = new CodeWriter(path); // using writer.WriteLine("// Generate By EToy"); writer.WriteLine("// Don't Edit It!!"); writer.WriteLine(); writer.WriteLine("using XGame.Framework.Database;"); writer.WriteLine(); writer.WriteLine(); // namespace writer.Bracket("namespace XGame.Database"); { // class writer.Bracket($"public partial class {csharpTypeName} : TableRepository<{tableClassName}, {csharpTypeName}>"); { } writer.EndBracket(); } writer.EndBracket(); } } }