tom*_*ash 3 c# code-generation abstract-syntax-tree roslyn
我想使用Roslyn加载C#源并将其写入另一个文件,用替换替换关键字.样品:
for (int i=0; i<10; i++){}
Run Code Online (Sandbox Code Playgroud)
翻译成
foobar (int i=0; i<10; i++){}
Run Code Online (Sandbox Code Playgroud)
这种操作的语法可能是什么样的?
我不知道这有多好,但您可以ForKeyword用另一个ForKeyword令牌替换每个令牌,但这次使用您的自定义文本.为此,您可以使用CSharpSyntaxRewriter:
class KeywordRewriter : CSharpSyntaxRewriter
{
public override SyntaxToken VisitToken(SyntaxToken token)
{
if (token.Kind() == SyntaxKind.ForKeyword)
{
return SyntaxFactory.Token(
token.LeadingTrivia, SyntaxKind.ForKeyword, "foobar", "foobar",
token.TrailingTrivia);
}
return token;
}
}
Run Code Online (Sandbox Code Playgroud)
使用此重写器,您可以编写如下代码:
string code = "for (int i=0; i<10; i++){}";
var statement = SyntaxFactory.ParseStatement(code);
var rewrittenStatement = new KeywordRewriter().Visit(statement);
Console.WriteLine(rewrittenStatement);
Run Code Online (Sandbox Code Playgroud)
打印出你想要的东西:
foobar (int i=0; i<10; i++){}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |