我正在使用Roslyn编写代码分析器,我需要检查ExpressionSyntax
是Task
还是Task<T>
。
到目前为止,我有这个:
private static bool IsTask(ExpressionSyntax expression, SyntaxNodeAnalysisContext context)
{
var type = context.SemanticModel.GetTypeInfo(expression).Type;
if (type == null)
return false;
if (type.Equals(context.SemanticModel.Compilation.GetTypeByMetadataName("System.Threading.Tasks.Task")))
return true;
if (type.Equals(context.SemanticModel.Compilation.GetTypeByMetadataName("System.Threading.Tasks.Task`1")))
return true;
return false;
}
适用于Task
,但不适用于Task<int>
或Task<string>
...我可以检查名称和名称空间,但这不切实际,因为我必须检查每个&#34;电平&#34;命名空间。
有推荐的方法吗?