В первую очередь, IQueryable
расширяется эти IEnumerable
интерфейс, таким образом, что-либо, что можно сделать с "плоскостью" IEnumerable
, можно также сделать с IQueryable
.
IEnumerable
просто имеет GetEnumerator()
метод, который возвращается Enumerator
, для которого можно назвать MoveNext()
метод для итерации через последовательность [1 116] T.
, Что IQueryable
имеет, это IEnumerable
не делает , два свойства в particular— тот, который указывает на поставщик запроса (например, LINQ поставщику SQL) и другой указывающий выражение запроса, представляющее эти IQueryable
объект как абстрактное синтаксическое дерево во время выполнения проходимое, которое может быть понято под данным поставщиком запроса (по большей части, Вы не можете дать LINQ SQL-выражению к LINQ поставщику Объектов без выданного исключения).
выражение может просто быть константным выражением самого объекта или более сложного дерева составленного набора операторов запроса и операндов. Поставщик запроса IQueryProvider.Execute()
или IQueryProvider.CreateQuery()
методы называют с , Выражение передало ему, и затем или результат запроса или другой IQueryable
возвращаются, соответственно.
IncludeFinder is a free tool I have used before successfully.
Этот инструмент отлично подходит для анализа дерева включения: IncludeManager . Вы сможете получить много полезной информации из этого инструмента.
Я должен начать работать с крупномасштабным проектом на C ++, который требует управления зависимостями, поэтому, естественно, я искал некоторые инструменты. Я был удивлен, увидев, что CppDepend был отмечен как фаворит здесь, поскольку одна лицензия стоит 300 евро, а IncludeManager - 20 фунтов стерлингов .. И выполняет ту же работу. На всякий случай, если кто-то здесь использовал один или оба инструмента, есть ли «веская» причина, по которой я должен потратить дополнительные 280 фунтов стерлингов (1–1 евро) на CppDepend?
* Обратите внимание, что я хотел бы иметь свою личную копию, поэтому не имеет значения, есть она у компании или нет.
http: //github.com/yuzhichang/cppdep может быть тем, что вам нужно. Я написал его для анализа зависимостей между компонентами / пакетами / группами пакетов большого проекта C / C ++. Это переписанный файл dep_utils (adep / cdep / ldep), предоставленный Джоном Лакосом. книга «Крупномасштабное проектирование программного обеспечения на C ++».
Возможно, вы сможете использовать DoxyS в качестве помощи, который создает графы, представляющие включенные файлы, как часть создаваемой документации.
-Martin