static void Rebuild(string text, FileInfo fileInfo) { var dsl = text; var generator = new TemplatedGenerator { GenerateInterfaceForEntityWithModifiers = "?", TemplateForInterfaceName = "public interface I{0}Aggregate", TemplateForInterfaceMember = "void When({0} c);", ClassNameTemplate = @"[DataContract(Namespace = {1})] public partial record {0}", MemberTemplate = "[DataMember(Order = {0})] public {1} {2} {{ get; init; }}", }; File.WriteAllText(Path.ChangeExtension(fileInfo.FullName, "cs"), GeneratorUtil.Build(dsl, generator)); File.WriteAllText( Path.Combine(fileInfo.DirectoryName, "IsExternalInit.cs"), @"// Zie https://stackoverflow.com/a/64749403 voor uitleg waarom IsExternalInit noodzakelijk is. #if NETFRAMEWORK || NETSTANDARD namespace System.Runtime.CompilerServices { internal static class IsExternalInit {} } #endif"); }
public void Test() { var generator = new TemplatedGenerator() { Namespace = "Mine" }; var dsl = @" let name = string Name; let security = SecurityDetails Security; let auth = SecurityRequest Request; entity ProjectAggregate (Guid ProjectId); using ? = CommandTo<ProjectId>; using ! = EventFrom<ProjectId>; // projects CreateProject? (name, int Rank, auth) ProjectCreated! (name, int Rank, security) RenameProject? (name, auth) ProjectRenamed! (name, security) DeleteProject? (auth) ProjectDeleted! (ref DeleteProject) entity null (); DoSomething (name) "; var ctx = GeneratorUtil.GenerateContext(dsl); Console.WriteLine(GeneratorUtil.Build(ctx, generator)); }
static void Main(string[] args) { const string source = @" let id = Guid Id; Security (id, string path) let security = Security Security; let name = string Name; let rank = int Rank; let parent = Guid ParentId; DeleteContext ?(id) ContextDeleted !(id) CreateContext ?(id, name, rank) ContextCreated !(id, name, rank)"; var generator = new TemplatedGenerator() { }; Console.WriteLine(GeneratorUtil.Build(source, generator)); Console.ReadLine(); }
public static string Build(string source, TemplatedGenerator generator) { var builder = new StringBuilder(); using (var stream = new StringWriter(builder)) using (var writer = new IndentedTextWriter(stream, " ")) { generator.Generate(GenerateContext(source), writer); } return builder.ToString(); }
public static string Build(string source, TemplatedGenerator generator) { var builder = new StringBuilder(); using (var stream = new StringWriter(builder)) using (var writer = new IndentedTextWriter(stream, " ")) { generator.Generate(GenerateContext(source), writer); } return(builder.ToString()); }
static void Rebuild(string text, string fullPath) { var dsl = text; var generator = new TemplatedGenerator { GenerateInterfaceForEntityWithModifiers = "?", TemplateForInterfaceName = "public interface I{0}Aggregate", TemplateForInterfaceMember = "void When({0} c);", ClassNameTemplate = @"[DataContract(Namespace = {1})] public partial class {0}", MemberTemplate = "[DataMember(Order = {0})] public {1} {2} {{ get; private set; }}", }; File.WriteAllText(Path.ChangeExtension(fullPath, "cs"), GeneratorUtil.Build(dsl, generator)); }
static void Rebuild(string text, string fullPath) { var dsl = text; var generator = new TemplatedGenerator() { GenerateInterfaceForEntityWithModifiers = "?", TemplateForInterfaceName = "public interface I{0}Aggregate", TemplateForInterfaceMember = "void When({0} c);", ClassNameTemplate = @" [DataContract(Namespace = {1})] public partial class {0}", MemberTemplate = "[DataMember(Order = {0})] public {1} {2} {{ get; private set; }}", }; File.WriteAllText(Path.ChangeExtension(fullPath, "cs"), GeneratorUtil.Build(dsl, generator)); }