Составление CQL-запроса - PullRequest
       48

Составление CQL-запроса

3 голосов
/ 07 марта 2011

Можно ли составлять запросы на CQL?

Я хотел бы написать что-то вроде:

ВЫБЕРИТЕ ТИПЫ ИЗ МОНТАЖА "myassemblie" ГДЕ ИСПОЛЬЗУЯ ВЫБРАТЬ МЕТОДЫ ИЗ МОНТАЖА "myotherassemblie", ГДЕ IsStatic

Спасибо, Vans

1 Ответ

3 голосов
/ 07 марта 2011

Команда NDepend с гордостью наконец-то дала элегантный ответ на этот вопрос :) Благодаря новой функции NQepend v4 Code Query LINQ (CQLinq) то, что вы запрашиваете, может быть написано, например, как:

let staticMethods = Application.Assemblies.WithName("nunit.core")
                    .ChildMethods().Where(m => m.IsStatic)

from t in Application.Assemblies.WithName("nunit.util")
          .ChildTypes().UsingAny(staticMethods )

let staticMethodsUsed = staticMethods.UsedBy(t)
select new { t, staticMethodsUsed  }

Существует много других способов написания такого запроса, но этот способ, безусловно, является наиболее лаконичным и оптимизированным ( верхняя правая панель сообщает, что он выполнен за 4 мс ):

Code Query Composition through CQLinq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...