private static MemberDeclarationSyntax AfterMember( SyntaxList<MemberDeclarationSyntax> members, MemberDeclarationSyntax eventDeclaration) { if (eventDeclaration.Kind() == SyntaxKind.EventFieldDeclaration) { // Field style events go after the last field event, or after the last field. var lastEvent = members.LastOrDefault(m => m is EventFieldDeclarationSyntax); return lastEvent ?? LastField(members); } if (eventDeclaration.Kind() == SyntaxKind.EventDeclaration) { // Property style events go after existing events, then after existing constructors. var lastEvent = members.LastOrDefault(m => m is EventDeclarationSyntax); return lastEvent ?? LastConstructor(members); } return null; }
private static SyntaxList<StatementSyntax> CreateSectionStatements(StatementSyntax source) { var result = new SyntaxList<StatementSyntax>(); if (source is BlockSyntax) { var block = source as BlockSyntax; result = result.AddRange(block.Statements); } else { result = result.Add(source); } var lastStatement = result.LastOrDefault(); if (!(lastStatement is ReturnStatementSyntax || lastStatement is ThrowStatementSyntax)) { result = result.Add(SyntaxFactory.BreakStatement()); } return result; }
private static MemberDeclarationSyntax LastPropertyOrField( SyntaxList<MemberDeclarationSyntax> members) { var lastProperty = members.LastOrDefault(m => m is PropertyDeclarationSyntax); return lastProperty ?? LastField(members); }