Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }