/// <summary> /// Initializes a new instance of the <see cref="ExpressionTreeParser"/> class with a custom <see cref="INodeTypeProvider"/> and /// <see cref="IExpressionTreeProcessor"/> implementation. /// </summary> /// <param name="nodeTypeProvider">The <see cref="INodeTypeProvider"/> to use when parsing <see cref="Expression"/> trees. Use /// <see cref="CreateDefaultNodeTypeProvider"/> to create an instance of <see cref="CompoundNodeTypeProvider"/> that already includes all /// default node types. (The <see cref="CompoundNodeTypeProvider"/> can be customized as needed by adding or removing /// <see cref="CompoundNodeTypeProvider.InnerProviders"/>).</param> /// <param name="processor">The <see cref="IExpressionTreeProcessor"/> to apply to <see cref="Expression"/> trees before parsing their nodes. Use /// <see cref="CreateDefaultProcessor"/> to create an instance of <see cref="CompoundExpressionTreeProcessor"/> that already includes /// the default steps. (The <see cref="CompoundExpressionTreeProcessor"/> can be customized as needed by adding or removing /// <see cref="CompoundExpressionTreeProcessor.InnerProcessors"/>).</param> public ExpressionTreeParser(INodeTypeProvider nodeTypeProvider, IExpressionTreeProcessor processor) { ArgumentUtility.CheckNotNull("nodeTypeProvider", nodeTypeProvider); ArgumentUtility.CheckNotNull("processor", processor); _nodeTypeProvider = nodeTypeProvider; _processor = processor; _methodCallExpressionParser = new MethodCallExpressionParser(_nodeTypeProvider); }
/// <summary> /// Initializes a new instance of the <see cref="ExpressionTreeParser"/> class with a custom <see cref="INodeTypeProvider"/> and /// <see cref="IExpressionTreeProcessor"/> implementation. /// </summary> /// <param name="nodeTypeProvider">The <see cref="INodeTypeProvider"/> to use when parsing <see cref="Expression"/> trees. Use /// <see cref="CreateDefaultNodeTypeProvider"/> to create an instance of <see cref="CompoundNodeTypeProvider"/> that already includes all /// default node types. (The <see cref="CompoundNodeTypeProvider"/> can be customized as needed by adding or removing /// <see cref="CompoundNodeTypeProvider.InnerProviders"/>).</param> /// <param name="processor">The <see cref="IExpressionTreeProcessor"/> to apply to <see cref="Expression"/> trees before parsing their nodes. Use /// <see cref="CreateDefaultProcessor"/> to create an instance of <see cref="CompoundExpressionTreeProcessor"/> that already includes /// the default steps. (The <see cref="CompoundExpressionTreeProcessor"/> can be customized as needed by adding or removing /// <see cref="CompoundExpressionTreeProcessor.InnerProcessors"/>).</param> public ExpressionTreeParser (INodeTypeProvider nodeTypeProvider, IExpressionTreeProcessor processor) { ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider); ArgumentUtility.CheckNotNull ("processor", processor); _nodeTypeProvider = nodeTypeProvider; _processor = processor; _methodCallExpressionParser = new MethodCallExpressionParser (_nodeTypeProvider); }