Roslynを使用してクラスメソッドのパラメータリストを取得しようとしていますが、Roslynがエラーの原因となるメソッドのパラメータの1つとしてメソッド本体内で使用されるLambdaパラメータを考慮して返すという奇妙な動作私のコードで。なぜRoslynはメソッドのパラメータとしてラムダパラメータを考慮しますか?ラムダ式パラメータがメソッドパラメータリストに表示されるのはなぜですか?
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!
解析されたコード:pはないタイプの方法1のパラメータの1つとして返され
public void Method1(RequestId requestId)
{
...
var packetsToKeep = this.queuedPackets.Where(p => p.RequestId != requestId)
memmeth
を仮定
どのようにクラッシュしますか?どの例外がスローされますか? –
Throws System.NullReferenceException – Supernova
'' 'mempara.Type.ToFullString()?Trim();' '' nullpropagationを使用することをお勧めします。 –