从Roslyn CTP创建的显示方法不正确

时间:2014-02-14 13:11:46

标签: c# roslyn

我想使用Roslyn CTP创建新方法。我创建了一个新的实例类型的MethodDeclarationSyntax。

 MethodDeclarationSyntax lMethodDeclarationSyntax = Syntax.MethodDeclaration(
            Syntax.List<AttributeListSyntax>(),
            Syntax.TokenList(
                Syntax.Token(SyntaxKind.PublicKeyword)),
            Syntax.IdentifierName("MemoryStream"),
            null,
            Syntax.Identifier("Serialize"),
            null,
            Syntax.ParameterList(),
            Syntax.List<TypeParameterConstraintClauseSyntax>(),
            Syntax.Block(lList));

但作为回应我得到这样的东西:

publicMemoryStreamSerialize(){MemoryStream lMemoryStream = new MemoryStream();StreamWriter lStreamWriter = new StreamWriter(lMemoryStream);lStreamWriter.Write(IntVariable);lStreamWriter.Write(ExVariable.ToStream());return lMemoryStream;}  

我错过了什么?

1 个答案:

答案 0 :(得分:2)

在末尾添加NormalizeWhitespace,将标准化的空白琐事添加到树中。

MethodDeclarationSyntax lMethodDeclarationSyntax =
    Syntax.MethodDeclaration(
        Syntax.List<AttributeListSyntax>(),
        Syntax.TokenList(Syntax.Token(SyntaxKind.PublicKeyword)),
        Syntax.IdentifierName("MemoryStream"),
        null,
        Syntax.Identifier("Serialize"),
        null,
        Syntax.ParameterList(),
        Syntax.List<TypeParameterConstraintClauseSyntax>(),
        Syntax.Block(lList))
    .NormalizeWhitespace();

您可以对任何语法节点执行此操作,它将返回一个节点,其中所有空白琐事在整个树中进行规范化。请记住,节点树是不可变的,因此它不会对现有树产生任何影响,但会创建一个新树。