Dot-Net
如何將方法 ReturnType 與預定義類型進行比較
使用 Microsoft Roslyn 我試圖確定方法返回類型是否為 void。
我的 MethodDeclarationSyntax 上有句柄,可以看到名為“ReturnType”的屬性,這是一個 void 的 PredefinedType。我是否必須實際檢查關鍵字種類?有一個更好的方法嗎?
((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind() != SyntaxKind.VoidKeyword有沒有推薦的方法來完成我想做的事情?
因為
void,那是完美的,因為沒有其他方式可以說。System.Void那裡明確禁止說。對於其他預定義類型
int,請記住,您可以使用關鍵字或 .NET 類型編寫它System.Int32。根據您的情況,您可能實際上需要區分它們,因此語法檢查仍然是正確的。如果您不關心差異並且只想知道它是否是整數,那麼您應該使用 a 進行一些綁定SemanticModel:var methodSymbol = (MethodSymbol)semanticModel.GetDeclaredSymbol(methodDecl); if (methodSymbol.ReturnType.SpecialType == SpecialType.System_Int32) { /* ...whatever goes here */ }
MethodSymbol還有一個ReturnsVoid屬性,如果你碰巧有它的符號,你可能會發現它很有用。