为什么Lambda表达式参数出现在方法参数列表中?

时间:2017-06-29 07:50:40

标签: c# .net visual-studio roslyn

我正在尝试使用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的参数之一返回,没有类型

1 个答案:

答案 0 :(得分:0)

假设memmethMethodDeclarationSyntax,那么您想要的是访问其ParameterList.Parameters

var paramDeclaratons = memmeth.ParameterList.Parameters;