internal CompilationUnitSyntax GenerateCompilationUnit() { var ctx = SourceFileContext.CreateFullyQualified(SystemClock.Instance); var ns = Namespace(PackageName); using (ctx.InNamespace(ns)) { var serviceClass = GenerateServiceClass(ctx); var baseRequestClass = GenerateBaseRequestClass(ctx); ns = ns.AddMembers(serviceClass, baseRequestClass); foreach (var resource in Resources) { var resourceClass = resource.GenerateClass(ctx); ns = ns.AddMembers(resourceClass); } } var dataNs = Namespace(PackageName + ".Data"); using (ctx.InNamespace(dataNs)) { var dataModels = DataModels .Where(dm => !dm.IsPlaceholder) .OrderBy(dm => dm.Typ.Name, StringComparer.Ordinal); foreach (var dataModel in dataModels) { dataNs = dataNs.AddMembers(dataModel.GenerateClass(ctx)); } } return(ctx.CreateCompilationUnit(ns).AddMembers(dataNs)); }
private static ResultFile GenerateCSharpCode(PackageModel package) { var ctx = SourceFileContext.CreateFullyQualified(SystemClock.Instance); var ns = Namespace(package.PackageName); using (ctx.InNamespace(ns)) { var serviceClass = package.GenerateServiceClass(ctx); var baseRequestClass = package.GenerateBaseRequestClass(ctx); ns = ns.AddMembers(serviceClass, baseRequestClass); foreach (var resource in package.Resources) { var resourceClass = resource.GenerateClass(ctx); ns = ns.AddMembers(resourceClass); } } var dataNs = Namespace(package.PackageName + ".Data"); using (ctx.InNamespace(dataNs)) { foreach (var dataModel in package.DataModels.Where(dm => dm.Parent is null)) { dataNs = dataNs.AddMembers(dataModel.GenerateClass(ctx)); } } var syntax = ctx.CreateCompilationUnit(ns).AddMembers(dataNs); return(new ResultFile($"{package.PackageName}.cs", syntax)); }
private static ResultFile GenerateCSharpCode(PackageModel package) { var ctx = SourceFileContext.CreateFullyQualified(SystemClock.Instance); var ns = Namespace(package.PackageName); using (ctx.InNamespace(ns)) { var serviceClass = package.GenerateServiceClass(ctx); var baseRequestClass = package.GenerateBaseRequestClass(ctx); ns = ns.AddMembers(serviceClass, baseRequestClass); foreach (var resource in package.Resources) { var resourceClass = resource.GenerateClass(ctx); ns = ns.AddMembers(resourceClass); } } var dataNs = Namespace(package.PackageName + ".Data"); using (ctx.InNamespace(dataNs)) { var dataModels = package.DataModels .Where(dm => dm.Parent is null && !dm.IsPlaceholder) .OrderBy(dm => dm.Typ.Name, StringComparer.Ordinal); foreach (var dataModel in dataModels) { dataNs = dataNs.AddMembers(dataModel.GenerateClass(ctx)); } } var syntax = ctx.CreateCompilationUnit(ns).AddMembers(dataNs); string content = ApplyIfDirectives(CodeFormatter.Format(syntax).ToFullString()); return(new ResultFile($"{package.PackageName}/{package.PackageName}.cs", content)); }