【问题标题】:Use Roslyn to get return statements ignoring the ones inside lambda expressions使用 Roslyn 获取忽略 lambda 表达式中的返回语句
【发布时间】:2017-01-21 12:08:34
【问题描述】:

我正在尝试使用 roslyn 来获取方法的返回语句,因为我正在使用这个:

var returns = methods.DescendantNodes().OfType<ReturnStatementSyntax>();

这行得通,它给了我所有的返回语句。但是现在,我想得到所有的返回值,忽略 lambda 表达式中的返回值。

我该怎么做?

是否有任何属性表明这一点?

【问题讨论】:

    标签: c# return roslyn


    【解决方案1】:

    我不确定,但您可以尝试类似的方法:

    method.DescendantNodes().OfType<ReturnStatementSyntax>().Where(
         rs => !(rs.AncestorsAndSelf().OfType<LambdaExpressionSyntax>().Any())
    );
    

    希望这能解决你的问题。

    【讨论】:

    • 写一个从不进入 lambdas 的访问者会更有效率。
    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多