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 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(); 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 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); } }