使用 Roslyn 获取 return 语句,忽略 lambda 表达式中的语句
Use Roslyn to get return statements ignoring the ones inside lambda expressions
我正在尝试使用 roslyn 获取方法的 return 语句,为此我正在使用:
var returns = methods.DescendantNodes().OfType<ReturnStatementSyntax>();
行得通,它给了我所有的 return 语句。但是现在,我想让所有 returns 忽略 lambda 表达式中的那些。
我该怎么做?
有没有属性表示的?
我不确定,但你可以尝试类似这样的操作:
method.DescendantNodes().OfType<ReturnStatementSyntax>().Where(
rs => !(rs.AncestorsAndSelf().OfType<LambdaExpressionSyntax>().Any())
);
希望这能解决您的问题。
我正在尝试使用 roslyn 获取方法的 return 语句,为此我正在使用:
var returns = methods.DescendantNodes().OfType<ReturnStatementSyntax>();
行得通,它给了我所有的 return 语句。但是现在,我想让所有 returns 忽略 lambda 表达式中的那些。
我该怎么做?
有没有属性表示的?
我不确定,但你可以尝试类似这样的操作:
method.DescendantNodes().OfType<ReturnStatementSyntax>().Where(
rs => !(rs.AncestorsAndSelf().OfType<LambdaExpressionSyntax>().Any())
);
希望这能解决您的问题。