12

Microsoft Roslynを使用して、メソッドの戻り型が無効かどうかを判断しようとしています。
MethodDeclarationSyntaxにハンドルがあり、「ReturnType」と呼ばれるプロパティを確認できます。これはvoidのPredefinedTypeです。キーワードの種類を実際に確認する必要がありますか?これを行うためのより良い方法はありますか?

((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind  != SyntaxKind.VoidKeyword

私がやろうとしていることを達成するための推奨される方法はありますか?

4

1 に答える 1

11

なぜならvoid、それを言う他の方法がないので、それは完璧です。そこでは、言うSystem.Voidことは明示的に禁止されています。

のような他の事前定義されたタイプの場合int、キーワードまたは.NETタイプのいずれかを使用して記述できることに注意してくださいSystem.Int32。シナリオによっては、実際にそれらを区別する必要がある場合があるため、構文チェックは引き続き正しいでしょう。違いを気にせず、それが整数かどうかを知りたい場合は、:を使用してバインディングを実行する必要がありますSemanticModel

var methodSymbol = (MethodSymbol)semanticModel.GetDeclaredSymbol(methodDecl);
if (methodSymbol.ReturnType.SpecialType == SpecialType.System_Int32)
{
    /* ...whatever goes here */
}

MethodSymbolまたReturnsVoid、そのシンボルを持っている場合に役立つと思われるプロパティもあります。

于 2012-04-11T16:15:47.870 に答える