4

次の「コード修正」
を考慮して、プロパティのドキュメント要素を置き換え、それをクイック フィックス ドキュメントに置き換えようとしています。

雑学で悩んでいます

    private Task<Document> AddDocumentationAsync(CodeFixContext context, SyntaxNode root, DocumentationCommentTriviaSyntax xmlElementSyntax)
    {
        const string comment = "THIS IS THE NEW COMMENT";
        var text =
            SyntaxFactory.XmlText(SyntaxFactory.TokenList(
                SyntaxFactory.XmlTextLiteral(
                    SyntaxFactory.TriviaList(),
                    comment,
                    comment,
                    SyntaxFactory.TriviaList())));

        var textList = SyntaxFactory.List<XmlNodeSyntax>(new[] {text});
        XmlNodeSyntax[] nodes = new XmlNodeSyntax[]
        {
            SyntaxFactory.XmlElement(
                SyntaxFactory.XmlElementStartTag(SyntaxFactory.XmlName("summary")),
                textList,
                SyntaxFactory.XmlElementEndTag(SyntaxFactory.XmlName("summary"))),
        };
        var list = SyntaxFactory.List<XmlNodeSyntax>(nodes);
        var newDocumentation = SyntaxFactory.DocumentationCommentTrivia(
            SyntaxKind.SingleLineDocumentationCommentTrivia,
            list);

        var spaced = newDocumentation.WithTriviaFrom(xmlElementSyntax);
        var n1 = root.ReplaceNode(xmlElementSyntax, spaced);

        var newDocument = context.Document.WithSyntaxRoot(n1);
        return Task.FromResult(newDocument);
    }

この出力を取得します。

ここに画像の説明を入力

<summaryの前にスペースがあり、改行文字が正しい場所にあり、改行で始まることを確認するにはどうすればよいですかpublic string。すなわち

    /// <summary>
    /// THIS IS THE NEW COMMENT
    /// </summary>
    public string Test { get; set; }

私の登録コードは次のようになります。

    var documentationStructure = node.GetDocumentationCommentTriviaSyntax();
    var xmlElementSyntax = documentationStructure;
    var action = CodeAction.Create("Create XML Documentation", c => this.AddDocumentationAsync(context, root, xmlElementSyntax), "Create XML Documentation");
    context.RegisterCodeFix(
        action,
        diagnostic);
4

1 に答える 1

4

EndOfDocumentationCommentTokenコメントにトークンを追加する必要があります。次のことを試すことができます.WithEndOfComment(SyntaxFactory.Token(SyntaxKind.EndOfDocumentationCommentToken))

ところで、このオンライン ツールを参照用にチェックできます。

于 2015-11-11T15:15:24.063 に答える