if statements
This:
MethodDeclarationSyntax method = SF.MethodDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.VoidKeyword ) ), "MyMethod" ) .AddModifiers( SF.Token( SyntaxKind.PublicKeyword ) ) .AddBodyStatements( SF.IfStatement( SF.BinaryExpression( SyntaxKind.EqualsExpression, SF.IdentifierName( "_a" ), SF.LiteralExpression( SyntaxKind.NumericLiteralExpression, SF.Literal( "X" ) ) ), SF.Block( ) ) ) ;
Will get you this:
public void MyMethod() { if (_a == "X") { } }
if-else statements
This:
MethodDeclarationSyntax method = SF.MethodDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.VoidKeyword ) ), "MyMethod" ) .AddModifiers( SF.Token( SyntaxKind.PublicKeyword ) ) .AddBodyStatements( SF.IfStatement( SF.BinaryExpression( SyntaxKind.EqualsExpression, SF.IdentifierName( "_a" ), SF.LiteralExpression( SyntaxKind.NumericLiteralExpression, SF.Literal( "X" ) ) ), SF.Block( ), SF.ElseClause( SF.Token( SyntaxKind.ElseKeyword ), SF.IfStatement( SF.BinaryExpression( SyntaxKind.EqualsExpression, SF.IdentifierName( "_a" ), SF.LiteralExpression( SyntaxKind.NumericLiteralExpression, SF.Literal( "Y" ) ) ), SF.Block( ), SF.ElseClause( SF.Token( SyntaxKind.ElseKeyword ), SF.Block( ) ) ) ) ) )
Will get you this:
public void MyMethod() { if (_a == "X") { } else if (_a == "Y") { } else { } }
for loops
This:
MethodDeclarationSyntax method = SF.MethodDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.VoidKeyword ) ), "MyMethod" ) .AddModifiers( SF.Token( SyntaxKind.PublicKeyword ) ) .AddBodyStatements( SF.ForStatement( SF.VariableDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.IntKeyword ) ), SF.SeparatedList(new [] { SF.VariableDeclarator( SF.Identifier( "i" ), null, SF.EqualsValueClause( SF.LiteralExpression( SyntaxKind.NumericLiteralExpression, SF.Literal( 0 ) ) ) ) } ) ), SF.SeparatedList<ExpressionSyntax>(), SF.BinaryExpression( SyntaxKind.LessThanExpression, SF.IdentifierName( "i" ), SF.LiteralExpression( SyntaxKind.NumericLiteralExpression, SF.Literal( 10 ) ) ), SF.SeparatedList<ExpressionSyntax>( new [] { SF.PostfixUnaryExpression( SyntaxKind.PostIncrementExpression, SF.IdentifierName( "i" ) ) } ), SF.Block( ) ) )
Will get you this:
public void MyMethod() { for (int i = 0; i < 10; i++) { } }
foreach loops
This defines our generic list:
LocalDeclarationStatementSyntax listDeclaration = SF.LocalDeclarationStatement( SF.TokenList(), SF.VariableDeclaration( SF.GenericName( SF.Identifier( "IList" ), SF.TypeArgumentList( SF.SeparatedList<TypeSyntax>( new [] { SF.PredefinedType( SF.Token( SyntaxKind.StringKeyword ) ) } ) ) ), SF.SeparatedList( new [] { SF.VariableDeclarator( SF.Identifier( "list" ), null, SF.EqualsValueClause( SF.ObjectCreationExpression( SF.Token( SyntaxKind.NewKeyword ), SF.GenericName( SF.Identifier( "List" ), SF.TypeArgumentList( SF.SeparatedList<TypeSyntax>( new [] { SF.PredefinedType( SF.Token( SyntaxKind.StringKeyword ) ) } ) ) ), SF.ArgumentList( SF.SeparatedList<ArgumentSyntax>( new ArgumentSyntax[0] ) ), null ) ) ) } ) ) );
And this our “foreach”:
ForEachStatementSyntax forEachStatement = SF.ForEachStatement( SF.PredefinedType( SF.Token( SyntaxKind.StringKeyword ) ), SF.Identifier( "item" ), SF.IdentifierName( "list" ), SF.Block() );
Adding both to a method:
MethodDeclarationSyntax method = SF.MethodDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.VoidKeyword ) ), "MyMethod" ) .AddModifiers( SF.Token( SyntaxKind.PublicKeyword ) ) .AddBodyStatements( listDeclaration, forEachStatement );
Will get you this:
public void MyMethod() { IList<string> list = new List<string>(); foreach (string item in list) { } }
while loops
This is one of the more straightforward ones.
This:
MethodDeclarationSyntax method = SF.MethodDeclaration( SF.PredefinedType( SF.Token( SyntaxKind.VoidKeyword ) ), "MyMethod" ) .AddModifiers( SF.Token( SyntaxKind.PublicKeyword ) ) .AddBodyStatements( SF.WhileStatement( SF.LiteralExpression( SyntaxKind.TrueLiteralExpression ), SF.Block( SF.BreakStatement() ) ) );
Will get you this:
public void MyMethod() { while (true) { break; } }
Very usefull. Happy to finally found this. Thank you for that.