.net 如何将方法ReturnType与预定义类型进行比较
使用Microsoft Roslyn,我试图确定方法返回类型是否为void。.net 如何将方法ReturnType与预定义类型进行比较,.net,roslyn,.net,Roslyn,使用Microsoft Roslyn,我试图确定方法返回类型是否为void。 我有MethodDeclarationSyntax的句柄,可以看到名为“ReturnType”的属性。这是一个预定义的void类型。我真的需要检查关键字种类吗?有更好的方法吗 ((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind != SyntaxKind.VoidKeyword 有没有推荐的方法来完成我想做的事情?对于void,这很完美,因为没有其他方
我有MethodDeclarationSyntax的句柄,可以看到名为“ReturnType”的属性。这是一个预定义的void类型。我真的需要检查关键字种类吗?有更好的方法吗
((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind != SyntaxKind.VoidKeyword
有没有推荐的方法来完成我想做的事情?对于
void
,这很完美,因为没有其他方法可以说。这里明确禁止说System.Void
对于其他预定义类型,如int
,请记住,您可以使用关键字或.NET类型System.Int32
编写它。根据您的场景,您实际上可能需要区分它们,因此语法检查仍然是正确的。如果您不关心差异,只想知道它是否是整数,那么应该使用语义模型进行绑定:
var methodSymbol = (MethodSymbol)semanticModel.GetDeclaredSymbol(methodDecl);
if (methodSymbol.ReturnType.SpecialType == SpecialType.System_Int32)
{
/* ...whatever goes here */
}
MethodSymbol
还有一个ReturnsVoid
属性,如果碰巧有该属性的符号,您可能会发现该属性很有用