private static ClassDeclarationSyntax InjectInConstructor(ClassDeclarationSyntax classNode, SimpleNameSyntax symbolName, SyntaxToken fieldName) { string paramName = ToVariableName(symbolName); var oldConstructor = (ConstructorDeclarationSyntax)classNode.Members.FirstOrDefault(m => m.IsKind(SyntaxKind.ConstructorDeclaration)); var constructor = oldConstructor; if (constructor == null) { constructor = SyntaxFactory.ConstructorDeclaration(classNode.Identifier) .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword)) .NormalizeWhitespace(); } constructor = constructor.AddParameterListParameters( SyntaxFactory.Parameter(SyntaxFactory.Identifier(paramName)) .WithType(symbolName)) .AddBodyStatements(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.IdentifierName(fieldName), SyntaxFactory.IdentifierName(paramName)))); if (oldConstructor != null) { classNode = classNode.ReplaceNode(oldConstructor, constructor); } else { classNode = classNode.AddSortedMembers(constructor); } return(classNode); }
private static ClassDeclarationSyntax AddField(ClassDeclarationSyntax classNode, SimpleNameSyntax serviceType, SyntaxToken fieldIdentifier) { var field = SyntaxFactory.FieldDeclaration( SyntaxFactory.VariableDeclaration(serviceType, SyntaxFactory.SingletonSeparatedList(SyntaxFactory.VariableDeclarator(fieldIdentifier)))) .WithModifiers(SyntaxFactory.TokenList( SyntaxFactory.Token(SyntaxKind.PrivateKeyword), SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword))) .WithLeadingTrivia(SyntaxFactory.ElasticEndOfLine("\r\n")); return(classNode.AddSortedMembers(field)); }