public string GetSourceCode() { var writer = new IndentedTextWriter2(2, false); var sng = new ShortTypeNameGenerator(); foreach (var methodProduct in MethodProducts) { methodProduct.Write(writer, sng); } return($@" {sng.GetCombinedUsings()} namespace {BindToType.ContainingNamespace.ToFullDisplayString()} {{ public partial class {BindToType.Name} : {BindFromType.ToGlobalDisplayString()} {{ {Unknowns.Join(u => $"private readonly {u.Type!.ToGlobalDisplayString()} {u.Name};")} public {BindToType.Name}( {Unknowns.Join(u => $"{u.Type!.ToGlobalDisplayString()} {u.Name}", ",")} ) {{ {Unknowns.Join(u => $"this.{u.Name} = {u.Name};")} }} {writer.GetResultString()} }} }} "); }
public string GetSourceCode() { var writer = new IndentedTextWriter2(2, false); var sng = new ShortTypeNameGenerator(); foreach (var methodProduct in MembersProduct) { methodProduct.Write(writer, sng); } var compilationUnit = DpdtInject.Generator.Core.Properties.Resource.CarcassProxy; var fixedCompilationUnit = compilationUnit .ReplaceLineStartsWith( "namespace", $"namespace {BindToType.ContainingNamespace.ToFullDisplayString()}" ) .ReplaceLineStartsWith( "using BindFromType", $"" ) .ReplaceLineStartsWith( "using SessionSaver", $"" ) .CheckAndReplace( "//PROXYPRODUCER: additonal usings", sng.GetCombinedUsings() ) .CheckAndReplace( nameof(CarcassProxy), BindToType.Name ) .CheckAndReplace( "BindFromType", BindFromType.ToGlobalDisplayString() ) .CheckAndReplace( "SessionSaver", _sessionSaverType.ToGlobalDisplayString() ) .CheckAndReplace( "//PROXYPRODUCER: put methods here", writer.GetResultString() ) ; return(fixedCompilationUnit); }