XML Serializable IQueryable <T>/ Дерево выражений - PullRequest
3 голосов
/ 24 августа 2011

Существуют ли какие-либо классы, встроенные в .NET, которые преобразуют дерево выражений или IQueryable<T> в XML?

1 Ответ

1 голос
/ 24 августа 2011

Не напрямую, нет. IQuerable<T> - это интерфейс, и за ним может быть много реализаций, каждая из которых по-разному сериализуется.

Тем не менее, вы можете попробовать и сериализовать Expression, который IQueryable интерфейс (основа IQueryable<T>) предоставляет через Expression свойство .

Проблема в том, что класс Expression и его подклассы не сериализуемы, поэтому вам придется создать структуру, которая является зеркалом класса Expressionвсех его подклассов). и их много) а потом сериализовать что. К счастью, на MSDN существует проект Сериализация дерева выражений, который может вам помочь.

Даже тогда у вас все равно не будет таких вещей, как информация о поставщике и т. Д. Это может повлиять или не повлиять на то, что вы пытаетесь сделать.

Однако, если все, что вам нужно, это установить дерево выражений для существующей реализации IQueryable<T>, этого должно быть достаточно.

...