我有一些构建类的代码:
return SyntaxFactory
.ClassDeclaration(name)
.AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword))
.WithMembers(GetProperties());
所有这些都可以工作,并输出我期望的类。我想在此添加一个XML文档:
/// <summary>
/// Some plain text here.
/// </summary>
我不需要任何花哨的东西,只要纯文本。我很难找到这方面的任何例子,并且经历过各种重载的Annotations
、Trivia
和挂在SyntaxFactory
(XmlComment
、XmlElementStartTag
、DocumentationCommentExterior
、DocumentationCommentTrivia
)上的方法,没有joy (具有讽刺意味的是,这些方法都没有XML注释!)。我得到的最接近的是一些编译过的东西,但是在运行时用Unexpected false
崩溃了!
我正在使用.NET 4.5,使用VS 2015 RC和1.0.0-rc2的罗斯林。
发布于 2015-06-07 17:03:16
您可以使用RoslynQuoter查看如何做到这一点:
SyntaxFactory.ClassDeclaration(
@"C")
.WithKeyword(
SyntaxFactory.Token(
SyntaxFactory.TriviaList(
SyntaxFactory.Trivia(
SyntaxFactory.DocumentationCommentTrivia(
SyntaxKind.SingleLineDocumentationCommentTrivia,
SyntaxFactory.List<XmlNodeSyntax>(
new XmlNodeSyntax[]{
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" ",
@" ",
SyntaxFactory.TriviaList()))),
SyntaxFactory.XmlElement(
SyntaxFactory.XmlElementStartTag(
SyntaxFactory.XmlName(
SyntaxFactory.Identifier(
@"summary"))),
SyntaxFactory.XmlElementEndTag(
SyntaxFactory.XmlName(
SyntaxFactory.Identifier(
@"summary"))))
.WithContent(
SyntaxFactory.SingletonList<XmlNodeSyntax>(
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
new []{
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" Some plain text here.",
@" Some plain text here.",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" ",
@" ",
SyntaxFactory.TriviaList())})))),
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList())))})))),
SyntaxKind.ClassKeyword,
SyntaxFactory.TriviaList()))))
https://stackoverflow.com/questions/30695752
复制相似问题