The code required to create a customized query parser has changed (MethodCallExpressionNodeTypeRegistry, IExpressionTreeProcessingStep, ExpressionTreeParser)

Description

The MethodCallExpressionNodeTypeRegistry has been replaced by an interface with three implementations: INodeTypeProvider, MethodInfoBasedNodeTypeRegistry, MethodNameBasedNodeTypeRegistry, and CompoundNodeTypeProvider. The MethodCallExpressionNodeTypeRegistry.CreateDefault method has been replaced by ExpressionTreeParser.CreateDefaultNodeTypeProvider, which now creates a CompoundNodeTypeProvider holding default instances of MethodInfoBasedNodeTypeRegistry and MethodNameBasedNodeTypeRegistry. Change the defaults by adding, inserting, or removing instances to/from the default CompoundNodeTypeProvider (see below).

The IExpressionTreeProcessingStep interface is now called IExpressionTreeProcessor. Instead of an array of IExpressionTreeProcessors, ExpressionTreeParser now accepts a single IExpressionTreeProcessor (which can be a CompoundExpressionTreeProcessor if more than one processor is needed). The ExpressionTreeParser.CreateDefaultProcessor() method creates an instance of CompoundExpressionTreeProcessor with partial evaluation and transformation steps already included. Change the defaults by adding, inserting, or removing instances to/from the default CompoundExpressionTreeProcessor.

Here is the recommended new way of creating a customized query parser:

These changes were made in order to provide a more consistent and extensible design.

Activity

Show:
Fabian Schmied
March 12, 2012, 7:29 AM

Adapted sample code to show how to register expression transformers executed prior to partial evaluation.

Fixed

Assignee

Fabian Schmied

Reporter

Fabian Schmied

Labels

Time tracking

0m

Time remaining

0m

Components

Fix versions

Priority

Normal