public void AddMethodToClass()
{
var tree = SyntaxTree.ParseText(@"
class C
{
}");
var compilationUnit = (CompilationUnitSyntax)tree.GetRoot();
// Get ClassDeclarationSyntax corresponding to 'class C' above.
ClassDeclarationSyntax classDeclaration = compilationUnit.ChildNodes()
.OfType<ClassDeclarationSyntax>().Single();
// Construct a new MethodDeclarationSyntax.
MethodDeclarationSyntax newMethodDeclaration =
Syntax.MethodDeclaration(Syntax.ParseTypeName("void"), "M")
.WithBody(Syntax.Block());
// Add this new MethodDeclarationSyntax to the above ClassDeclarationSyntax.
ClassDeclarationSyntax newClassDeclaration =
classDeclaration.AddMembers(newMethodDeclaration);
// Update the CompilationUnitSyntax with the new ClassDeclarationSyntax.
CompilationUnitSyntax newCompilationUnit =
compilationUnit.ReplaceNode(classDeclaration, newClassDeclaration);
// Format the new CompilationUnitSyntax.
newCompilationUnit = (CompilationUnitSyntax)newCompilationUnit.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot();
Assert.AreEqual(@"
class C
{
void M()
{
}
}", newCompilationUnit.ToFullString());
}