public void ArrangeFrames(IServiceVariableSource services = null) { foreach (var method in _methods.Where(x => x.WillGenerate())) { method.ArrangeFrames(this, services); } }
public void ArrangeFrames(IServiceVariableSource services = null) { foreach (var method in _methods) { method.ArrangeFrames(this, services); } }
public void Compile(GeneratedAssembly generatedAssembly, IServiceVariableSource services = null) { var code = generatedAssembly.GenerateCode(services); var generator1 = new AssemblyGenerator(); generator1.ReferenceAssembly(GetType().Assembly); generator1.ReferenceAssembly(typeof(Task).Assembly); foreach (var assembly1 in generatedAssembly.Generation.Assemblies) { generator1.ReferenceAssembly(assembly1); } foreach (var assembly2 in _assemblies) { generator1.ReferenceAssembly(assembly2); } var assemblies = generatedAssembly.GeneratedTypes .SelectMany(x => x.AssemblyReferences()) .Distinct().ToArray(); assemblies .Each(x => generator1.ReferenceAssembly(x)); var generator = generator1; var assembly = generator.Generate(code); generatedAssembly.AttachAssembly(assembly); }
public string GenerateCode(IServiceVariableSource services = null) { foreach (var generatedType in GeneratedTypes) { services?.StartNewType(); generatedType.ArrangeFrames(services); } var namespaces = AllReferencedNamespaces(); using (var writer = new SourceWriter()) { Header?.Write(writer); writer.WriteLine("// <auto-generated/>"); // Disable all warnings per user request writer.WriteLine("#pragma warning disable"); foreach (var ns in namespaces.OrderBy(x => x)) { writer.Write($"using {ns};"); } writer.BlankLine(); writer.Namespace(Namespace); foreach (var @class in GeneratedTypes) { writer.WriteLine($"// START: {@class.TypeName}"); @class.Write(writer); writer.WriteLine($"// END: {@class.TypeName}"); writer.WriteLine(""); writer.WriteLine(""); } writer.FinishBlock(); Footer?.Write(writer); var code = writer.Code(); attachSourceCodeToTypes(ref code); return(code); } }
public void CompileAll(IServiceVariableSource services = null) { var code = GenerateCode(services); var generator = buildGenerator(Generation); var assembly = generator.Generate(code); var generated = assembly.GetExportedTypes().ToArray(); foreach (var generatedType in GeneratedTypes) { generatedType.FindType(generated); } }
public string GenerateCode(IServiceVariableSource services = null) { foreach (var generatedType in GeneratedTypes) { services?.StartNewType(); generatedType.ArrangeFrames(services); } var namespaces = GeneratedTypes .SelectMany(x => x.AllInjectedFields) .Select(x => x.ArgType.Namespace) .Concat(new string[] { typeof(Task).Namespace }) .Distinct().ToList(); var writer = new SourceWriter(); foreach (var ns in namespaces.OrderBy(x => x)) { writer.Write($"using {ns};"); } writer.BlankLine(); writer.Namespace(Generation.ApplicationNamespace); foreach (var @class in GeneratedTypes) { writer.WriteLine($"// START: {@class.TypeName}"); @class.Write(writer); writer.WriteLine($"// END: {@class.TypeName}"); writer.WriteLine(""); writer.WriteLine(""); } writer.FinishBlock(); var code = writer.Code(); attachSourceCodeToChains(code); return(code); }
public string GenerateCode(IServiceVariableSource services = null) { foreach (var generatedType in GeneratedTypes) { services?.StartNewType(); generatedType.ArrangeFrames(services); } var namespaces = AllReferencedNamespaces(); using (var writer = new SourceWriter()) { foreach (var ns in namespaces.OrderBy(x => x)) { writer.Write($"using {ns};"); } writer.BlankLine(); writer.Namespace(Generation.ApplicationNamespace); foreach (var @class in GeneratedTypes) { writer.WriteLine($"// START: {@class.TypeName}"); @class.Write(writer); writer.WriteLine($"// END: {@class.TypeName}"); writer.WriteLine(""); writer.WriteLine(""); } writer.FinishBlock(); var code = writer.Code(); attachSourceCodeToChains(ref code); return(code); } }
public MethodFrameArranger(IGeneratedMethod method, IGeneratedType type, IServiceVariableSource services) : this(method, type) { _services = services; }