2017-07-03 14 views
2

私はroslyn世代で遊んでいますが、そうでない場合を除いて正常に動作します。たとえば、C#7.0の機能throw expressionを使用したいと思います。しかし、SyntaxFactoryには対応する方法がありません。Roslynはカスタム式を作成します

var foo = bar ?? throw new Exception();のようなものを生成できるようになりましたか? NullCoalesceExpressionはExpressionSyntaxのようになりますが、ThrowStatementはobvioslyステートメントです。

私はcustom expressionの意味ですが、ゼロからビルドしようとしましたが、複数の例外が発生していますUnexpected SyntaxKind

答えて

4

Roslynで「カスタム表現」を作成するのはあまり意味がないと思います。 RoslynはC#コンパイラなので、常にすべてのC#構文を正確に表現しなければなりません。

つまり、文字列から構文ノードを作成するには、SyntaxFactory.Parse*メソッドの形式でいくつかのオプションがあります。あなたの場合、SyntaxFactory.ParseExpressionになります。

throwの表現については、当然、それぞれSyntaxFactoryの方法があります。SyntaxFactory.ThrowExpressionです。 Microsoft.CodeAnalysis.CSharp(少なくとも2.0.0)の最新バージョンを使用していることを確認してください。

また、Roslyn APIを使用して特定のコードを構築する方法を知りたい場合は、Roslyn Quoterが非常に便利です。

+0

ありがとうございますが、この「引用符」はちょうど素晴らしいです。似たようなものが存在する可能性があることを私は知らなかった!それは本当に一握りです。新しいものを試してみるのを待っています。 –

関連する問題