1

構文 木に(または多分)"".GetType()あるものがあり、それをに変換したい、つまりノードをノードに変換したいと します。どうすればいいですか?ExpressionStatementSyntaxInvocationExpressionSyntax("".GetType())ExpressionStatementSyntaxParenthesizedExpressionSyntax

4

1 に答える 1

3
using System;
using System.Linq;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;

class Program
{
    static void Main(string[] args)
    {
        var oldRootNode = Syntax.ParseCompilationUnit(
            "class C { void M() { \"\".GetType(); } }");
        var oldStatementNode = oldRootNode.DescendantNodes().OfType<ExpressionStatementSyntax>().First();
        var oldExpressionNode = oldStatementNode.Expression;
        var newExpressionNode = Syntax.ParenthesizedExpression(oldExpressionNode);
        var newRootNode = oldRootNode.ReplaceNode(oldExpressionNode, newExpressionNode);
        Console.WriteLine(oldRootNode.ToString());
        Console.WriteLine(newRootNode.ToString());
    }
}
于 2012-08-27T20:31:38.363 に答える