CQLinq 代码可以在多个查询中重用吗?

Can CQLinq code be reused in multiple queries?

假设我正在分析一个包含大量控件的解决方案,例如

public class FooControl : IControlBase
{
    public void EvilMethod1()
    {
        // does some warning-level evil here
    }

    public void EvilMethod2()
    {
        // does some critical-level evil here
    }
}

我想写两个 CQLinq 查询来报告所有 类 在两个单独的查询中有恶意代码(例如 EvilMethod1)和使用真正恶意代码(例如 EvilMethod2)的。

为了找到所有应该被这个查询分析的类型,我会写这样的代码

let Controls = from t in Types
where t.NameLike("Control")
&& t.Implement(@"myNamespace.IControlBase")
select t

from c in Controls
... // actual query goes here

这段代码显然会被两个查询使用。 有没有办法在两个查询中引用此代码,或者我是否被迫复制它?

现在您需要复制逻辑,但是这个功能在我们的 TODO 列表中,您可以在这里投票:

https://ndepend.uservoice.com/forums/226344-ndepend-user-voice/suggestions/9752604-let-queries-pull-data-from-other-queries

一旦可用,我们将更新此答案,希望是在 2017 年的某个时候。

顺便说一句,这种想法已经可以通过 notmycode JustMyCode feature 获得,但您只能定义和重用 JustMyCode 集。