IMethodSymbol.ReturnType 为 null,参数为 null

问题描述 投票:0回答:1

所以我有这个功能,它只是一个测试功能,并没有真正做太多事情:

public static Task<string> Method(bool b, bool b2, bool b3, bool b4, int i)
{
    Console.WriteLine(b);
    Console.WriteLine(b2);
    Console.WriteLine(b3);
    Console.WriteLine(b4);
    Console.WriteLine(i);
    return Task.FromResult("");
}

所以我有一些代码来使用 roslyn 代码生成器来查找此函数,但是当我使用 SemanticModel 来获取 IMethodSymbol 时,这样做会给我很多 null 属性,例如Parameters属性未初始化并且ReturnType属性为null。仅当我使用任务类型或任何其他可等待类型作为返回类型或任何异步代码时,才会发生这种情况。

当函数是异步的时,IsAsync 属性为 true,但所有其他属性都未初始化。 async void 的情况并非如此。

有人有办法解决这个问题吗?

c# roslyn-code-analysis
1个回答
0
投票

我发现您可以将 MethodDeclarationSyntax 与您需要的属性结合使用 SemanticModel.GetSymbolInfo 来获取您需要的值。

© www.soinside.com 2019 - 2024. All rights reserved.