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 void Write(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { var returnName = MethodResult.GetString(sng); var methodBody = _fullMethodBody(MethodName, returnName); writer.WriteLine2(methodBody); }
internal void WriteDisposeMethodInvoke(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { if (DisposeMethod is null) { return; } writer.WriteLine($"TryToSafeDispose({DisposeMethod.MethodName}, ref result);"); }
internal void WriteMethods(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { RetrieveExplicitMethod.Write(writer, sng); writer.WriteLine(); RetrieveMethod.Write(writer, sng); writer.WriteLine(); RetrieveAllExplicitMethod.Write(writer, sng); writer.WriteLine(); RetrieveAllMethod.Write(writer, sng); writer.WriteLine(); RetrieveFastMethod.Write(writer, sng); }
public void WriteCombinedUnknownTypeBody(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { if (UnknownTypeProducts.Count == 0) { return; } foreach (var utp in UnknownTypeProducts) { utp.WriteBody(writer, sng); } }
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); }
internal void WriteCombinedBody(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { if (PredicateMethod != null) { PredicateMethod.Write(writer, sng); } FactoryObjectMethod.Write(writer, sng); FuncMethod.Write(writer, sng); if (DisposeMethod != null) { DisposeMethod.Write(writer, sng); } }
public void Write(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.Write("new System.Tuple<"); _tuplesParts.IterateWithLastSignal( t => t.WriteItem0(writer, sng), () => writer.Write(", ") ); writer.Write(">("); _tuplesParts.IterateWithLastSignal( t => t.WriteItem1(writer, sng), () => writer.Write(", ") ); writer.Write(")"); }
internal void Write( bool isLast0, IndentedTextWriter2 itwMethods, IndentedTextWriter2 itwInterfaces, IndentedTextWriter2 itwNonGenericInterfaces, IndentedTextWriter2 itwNonGenericGetAllInterfaces, ShortTypeNameGenerator sng ) { itwMethods.WriteLine($"#region {BindFrom.ToFullDisplayString()}"); itwMethods.WriteLine(); foreach (var(resolutionProduct, isLast1) in ResolutionProducts.IterateWithLastSignal()) { resolutionProduct.WriteMethods(itwMethods, sng); resolutionProduct.WriteInterface(itwInterfaces, sng); if (!isLast0 || !isLast1) { itwInterfaces.WriteLine(","); } resolutionProduct.NonGenericGetTuple.Write(itwNonGenericInterfaces, sng); if (!isLast0 || !isLast1) { itwNonGenericInterfaces.WriteLine(","); } resolutionProduct.NonGenericGetAllTuple.Write(itwNonGenericGetAllInterfaces, sng); if (!isLast0 || !isLast1) { itwNonGenericGetAllInterfaces.WriteLine(","); } } itwMethods.WriteLine(); itwMethods.WriteLine($"#endregion"); }
public void Write(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.WriteLine2(GetText()); }
public void WriteItem1(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.Write(_item1); }
public void WriteItem0(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.Write($"{sng.GetShortName(_item0)}"); }
public void WriteItem1(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.Write($"typeof({sng.GetShortName(_item1)})"); }
internal void WriteInterface(IndentedTextWriter2 writer, ShortTypeNameGenerator sng) { writer.Write(InterfaceProduct.GetInterfaceDeclaration(sng)); writer.Write(", "); writer.Write(InterfaceFastProduct.GetInterfaceDeclaration(sng)); }
public string GetString(ShortTypeNameGenerator sng) { return(sng.GetShortName(_type)); }
public string GetInterfaceDeclaration(ShortTypeNameGenerator sng) { return($"{InterfaceName}<{sng.GetShortName(TypeSymbol)}>"); }