我正在尝试使用Roslyn获取类方法的参数列表,并注意到Roslyn考虑的奇怪行为并返回在方法体内使用的Lambda参数作为方法的参数之一,这导致我的代码中出错。为什么Roslyn会考虑方法参数的lambda参数?
以下是代码:
var paramDeclaratons = memmeth.DescendantNodes().OfType<ParameterSyntax>();
foreach (var mempara in paramDeclaratons)
{
String paramType = mempara.Type.ToFullString().Trim(); //Here it crashes with System.NullReferenceException because Lambda returns no type!
解析的代码:
public void Method1(RequestId requestId)
{
...
var packetsToKeep = this.queuedPackets.Where(p => p.RequestId != requestId)
p作为Method1的参数之一返回,没有类型
答案 0 :(得分:0)
假设memmeth
是MethodDeclarationSyntax
,那么您想要的是访问其ParameterList.Parameters
:
var paramDeclaratons = memmeth.ParameterList.Parameters;