使用Microsoft Roslyn我试图确定方法返回类型是否为void.
我在MethodDeclarationSyntax上有句柄,可以看到名为"ReturnType"的属性,这是一个void的PredefinedType.我是否必须实际检查关键字类型?有一个更好的方法吗?
((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind != SyntaxKind.VoidKeyword
Run Code Online (Sandbox Code Playgroud)
有没有推荐的方法来完成我想要做的事情?
Jas*_*ski 10
因为void,这是完美的,因为没有其他方式可以说出来.俗话说System.Void被明确禁止在那里.
对于其他预定义类型int,请记住,您可以使用关键字或.NET类型编写它System.Int32.根据您的情况,您可能实际上需要区分它们,因此语法检查仍然是正确的.如果您不关心差异并且只想知道它是否是整数,那么您应该使用以下命令进行绑定SemanticModel:
var methodSymbol = (MethodSymbol)semanticModel.GetDeclaredSymbol(methodDecl);
if (methodSymbol.ReturnType.SpecialType == SpecialType.System_Int32)
{
/* ...whatever goes here */
}
Run Code Online (Sandbox Code Playgroud)
MethodSymbol还有一个ReturnsVoid属性,如果您碰巧有它的符号,您可能会发现它很有用.
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |