コード例 #1
0
        public void should_not_be_using_service_provider()
        {
            var container = new Container(x => {
                x.AddDbContext <InputDbContext>(builder =>
                {
                    builder.UseSqlServer("some connection string");
                }, optionsLifetime: ServiceLifetime.Singleton);
            });

            var rules    = new GenerationRules();
            var source   = container.CreateServiceVariableSource();
            var assembly = new GeneratedAssembly(rules);

            var handler = assembly.AddType("SpecialHandler", typeof(Handler));

            var handleMethod = handler.MethodFor(nameof(Handler.Handle));

            var save = MethodCall.For <InputDbContext>(x => x.Add <Input>(null));

            handleMethod.Frames.Add(save);

            var code = assembly.GenerateCode(source);


            code.ShouldNotContain("ServiceProvider");
        }
コード例 #2
0
        public void write_header_and_footer_2()
        {
            var assembly = new GeneratedAssembly(new GenerationRules("LamarCompiler.Generated"));

            assembly.Header = ConditionalCompilation.If("NET");
            assembly.Footer = ConditionalCompilation.EndIf();

            var code = assembly.GenerateCode().ReadLines().ToArray();

            code[0].ShouldBe("#if NET");
            code.Last().ShouldBe("#endif");
        }
コード例 #3
0
        public void write_header_and_footer()
        {
            var assembly = new GeneratedAssembly(new GenerationRules("LamarCompiler.Generated"));

            assembly.Header = new OneLineComment("Start here.");
            assembly.Footer = new OneLineComment("End here.");

            var code = assembly.GenerateCode().ReadLines().ToArray();

            code[0].ShouldBe("// Start here.");
            code.Last().ShouldBe("// End here.");
        }
コード例 #4
0
        public string SourceCodeForCompiledQuery(Type type)
        {
            if (!type.Closes(typeof(ICompiledQuery <,>)))
            {
                throw new ArgumentOutOfRangeException(nameof(type), "Not a compiled query type");
            }

            var assembly = new GeneratedAssembly(new GenerationRules(SchemaConstants.MartenGeneratedNamespace));

            using var session = _store.LightweightSession();
            var plan    = QueryCompiler.BuildPlan((IMartenSession)session, type, _store.Options);
            var builder = new CompiledQuerySourceBuilder(plan, _store.Options);

            var(sourceType, handlerType) = builder.AssemblyType(assembly);

            return(assembly.GenerateCode());
        }
コード例 #5
0
ファイル: CodeCommand.cs プロジェクト: waqasahmed0323/jasper
        public override bool Execute(CodeInput input)
        {
            Console.WriteLine("Generating a preview of the generated code, this might take a bit...");
            Console.WriteLine();
            Console.WriteLine();

            var runtime = input.BuildHost(StartMode.Lightweight);

            var rules             = runtime.Get <JasperGenerationRules>();
            var generatedAssembly = new GeneratedAssembly(rules);

            if (input.Match == CodeMatch.all || input.Match == CodeMatch.messages)
            {
                var handlers = runtime.Get <HandlerGraph>();
                foreach (var handler in handlers.Chains)
                {
                    handler.AssembleType(generatedAssembly, rules);
                }
            }

            if (input.Match == CodeMatch.all || input.Match == CodeMatch.routes)
            {
                var connegRules = runtime.Get <ConnegRules>();
                var routes      = runtime.Get <RouteGraph>();

                foreach (var route in routes)
                {
                    route.AssemblyType(generatedAssembly, connegRules, rules);
                }
            }

            var text = generatedAssembly.GenerateCode(runtime.Container.CreateServiceVariableSource());

            Console.WriteLine(text);

            if (input.FileFlag.IsNotEmpty())
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine($"Writing file {input.FileFlag.ToFullPath()}");
                new FileSystem().WriteStringToFile(input.FileFlag, text);
            }

            return(true);
        }
コード例 #6
0
ファイル: Scope.cs プロジェクト: smcardle88/lamar
 public string GenerateCodeWithInlineServices(GeneratedAssembly assembly)
 {
     return(assembly.GenerateCode(new ServiceVariableSource(ServiceGraph)));
 }
コード例 #7
0
 public string GenerateCodeWithInlineServices(GeneratedAssembly assembly)
 {
     return(assembly.GenerateCode(ServiceGraph));
 }