既存の構文ノードを持たずにRoslyn APIで構文ノードを生成したいと考えています。つまり、既存のオブジェクトが存在しないため、既存のオブジェクトに対してWithXYZ()メソッドを使用するだけでは変更できません。Roslynで構文ノードをゼロから作成するにはどうすればよいですか?
たとえば、InvocationExpressionSyntaxオブジェクトを生成したいとします。コンストラクタが利用可能であったと仮定すると、私は
var invoke = new InvocationExpressionSyntax(expression, arguments);
ような何かを行うことができます。しかしInvocationExpressionSyntax
のコンストラクタは、公開されないようです。
http://www.philjhale.com/2012/10/getting-started-with-roslyn.html
このブログは、私は、このような
Syntax.InvocationExpression()
としてAPIを使用することができることを示唆しているが、私はSyntax
が参照するか見ていない、と私はそれに似ている何も表示されません。 Roslyn API。
私は私が
var invoke = SyntaxFactory.InvocationExpression().WithExpression(expression);
を行うことができますそして、これが私のために十分に機能Microsoft.CodeAnalysis.VisualBasic.SyntaxFactoryを見つけました。疑問のある人にはMicrosoft.CodeAnalysis.CSharp.SyntaxFactory
もあります。
SyntaxFactory
は新しい構文ノードを作成する適切な方法ですか?
SyntaxFactory.InvocationExpressionが見つかったのは、src/Compilers/VisualBasic/Portableディレクトリのroslynソースコード(https://github.com/dotnet/roslyn)のPublicAPI.txtファイルです。さもなければ、私はSyntaxFactory
が文書化されるところを見ません。